UNPKG

5.51 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = _default;
7
8var _path = require("path");
9
10var _fs = require("fs");
11
12var _vinylFs = _interopRequireDefault(require("vinyl-fs"));
13
14var _signale = _interopRequireDefault(require("signale"));
15
16var _rimraf = _interopRequireDefault(require("rimraf"));
17
18var _through = _interopRequireDefault(require("through2"));
19
20var _slash = _interopRequireDefault(require("slash2"));
21
22var chokidar = _interopRequireWildcard(require("chokidar"));
23
24var babel = _interopRequireWildcard(require("@babel/core"));
25
26var _getBabelConfig = _interopRequireDefault(require("./getBabelConfig"));
27
28function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
29
30function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
32function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
33
34function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
35
36function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
37
38function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
39
40function _default(_x) {
41 return _ref.apply(this, arguments);
42}
43
44function _ref() {
45 _ref = _asyncToGenerator(function* (opts) {
46 const cwd = opts.cwd,
47 type = opts.type,
48 watch = opts.watch,
49 _opts$bundleOpts = opts.bundleOpts,
50 _opts$bundleOpts$targ = _opts$bundleOpts.target,
51 target = _opts$bundleOpts$targ === void 0 ? 'browser' : _opts$bundleOpts$targ,
52 runtimeHelpers = _opts$bundleOpts.runtimeHelpers,
53 _opts$bundleOpts$extr = _opts$bundleOpts.extraBabelPresets,
54 extraBabelPresets = _opts$bundleOpts$extr === void 0 ? [] : _opts$bundleOpts$extr,
55 _opts$bundleOpts$extr2 = _opts$bundleOpts.extraBabelPlugins,
56 extraBabelPlugins = _opts$bundleOpts$extr2 === void 0 ? [] : _opts$bundleOpts$extr2;
57 const srcPath = (0, _path.join)(cwd, 'src');
58 const targetDir = type === 'esm' ? 'es' : 'lib';
59 const targetPath = (0, _path.join)(cwd, targetDir);
60
61 _signale.default.info(`Clean ${targetDir} directory`);
62
63 _rimraf.default.sync(targetPath);
64
65 function transform(opts) {
66 const file = opts.file,
67 type = opts.type;
68
69 _signale.default.info(`[${type}] Transform: ${(0, _slash.default)(file.path).replace(`${cwd}/`, '')}`);
70
71 const babelOpts = (0, _getBabelConfig.default)({
72 target,
73 type,
74 typescript: true,
75 runtimeHelpers
76 });
77 babelOpts.presets.push(...extraBabelPresets);
78 babelOpts.plugins.push(...extraBabelPlugins);
79 return babel.transform(file.contents, _objectSpread({}, babelOpts, {
80 filename: file.path
81 })).code;
82 }
83
84 function createStream(src) {
85 return _vinylFs.default.src(src, {
86 allowEmpty: true,
87 base: srcPath
88 }).pipe(_through.default.obj((file, env, cb) => {
89 file.contents = Buffer.from(transform({
90 file,
91 type
92 })); // .tsx? -> .js
93
94 file.path = file.path.replace((0, _path.extname)(file.path), '.js');
95 cb(null, file);
96 })).pipe(_vinylFs.default.dest(targetPath));
97 }
98
99 return new Promise(resolve => {
100 createStream([(0, _path.join)(srcPath, '**/*'), `!${(0, _path.join)(srcPath, '**/fixtures/**/*')}`, `!${(0, _path.join)(srcPath, '**/.(test|e2e|spec).(js|jsx|ts|tsx)')}`]).on('end', () => {
101 if (watch) {
102 _signale.default.info('Start watch', srcPath);
103
104 chokidar.watch(srcPath, {
105 ignoreInitial: true
106 }).on('all', (event, fullPath) => {
107 const relPath = fullPath.replace(srcPath, '');
108
109 _signale.default.info(`[${event}] ${(0, _path.join)(srcPath, relPath)}`);
110
111 if (!(0, _fs.existsSync)(fullPath)) return;
112
113 if ((0, _fs.statSync)(fullPath).isFile()) {
114 createStream([fullPath]);
115 }
116 });
117 }
118
119 resolve();
120 });
121 });
122 });
123 return _ref.apply(this, arguments);
124}
\No newline at end of file