1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.getPundleInstance = exports.TICK = exports.X = undefined;
|
7 |
|
8 | var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
|
9 |
|
10 | var getPundleInstance = exports.getPundleInstance = function () {
|
11 | var _ref = _asyncToGenerator(function* (cli, terminal, projectPath, development, givenConfig, errorCallback) {
|
12 | var config = normalizeConfig(projectPath, givenConfig);
|
13 | var pundleEntry = config.includePolyfills && Array.isArray(givenConfig.babel.presets) && givenConfig.babel.presets.indexOf('babel-preset-motion') !== -1 ? [require.resolve('babel-regenerator-runtime'), 'index.js'] : ['index.js'];
|
14 | var pundleConfig = {
|
15 | entry: pundleEntry,
|
16 | pathType: development ? 'filePath' : 'number',
|
17 | rootDirectory: config.bundleDirectory,
|
18 | replaceVariables: {
|
19 | 'process.env.NODE_ENV': development ? 'development' : 'production'
|
20 | }
|
21 | };
|
22 |
|
23 | var plugins = [[require.resolve('pundle-npm-installer'), {
|
24 | save: config.saveNpmModules,
|
25 | rootDirectory: config.bundleDirectory,
|
26 | beforeInstall: function beforeInstall(name) {
|
27 | if (terminal) {
|
28 | var message = 'Installing ' + name;
|
29 | cli.addSpinner(message);
|
30 | }
|
31 | },
|
32 | afterInstall: function afterInstall(name, error) {
|
33 | if (terminal) {
|
34 | var message = 'Installing ' + name;
|
35 | cli.removeSpinner(message);
|
36 | if (error) {
|
37 | cli.log('Install ' + name + ' ' + X);
|
38 | cli.log(error);
|
39 | } else {
|
40 | cli.log('Install ' + name + ' ' + TICK);
|
41 | }
|
42 | } else if (error) {
|
43 | errorCallback(error);
|
44 | }
|
45 | }
|
46 | }], [require.resolve('babel-pundle'), { config: config.babel }]];
|
47 |
|
48 | if (!development) {
|
49 | var _pundle = new _pundle3.default(pundleConfig);
|
50 | yield _pundle.loadPlugins(plugins);
|
51 | return _pundle;
|
52 | }
|
53 | var pundle = new _pundleDev2.default({
|
54 | server: {
|
55 | hmr: true,
|
56 | port: config.webServerPort,
|
57 | hmrPath: '/_/bundle_hmr',
|
58 | bundlePath: '/_/bundle.js',
|
59 | sourceRoot: config.publicDirectory,
|
60 | sourceMapPath: '/_/bundle.js.map',
|
61 | error: function error(_error) {
|
62 | errorCallback(_error);
|
63 | }
|
64 | },
|
65 | pundle: pundleConfig,
|
66 | watcher: {},
|
67 | generator: {
|
68 | wrapper: 'hmr',
|
69 | sourceMap: true
|
70 | }
|
71 | });
|
72 | yield pundle.pundle.loadPlugins(plugins);
|
73 | pundle.server.use('*', function serveRequest(req, res, next) {
|
74 | var error = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];
|
75 |
|
76 | if (['/_/bundle.js', '/_/bundle.js.map', '/_/bundle_hmr'].indexOf(req.baseUrl) !== -1) {
|
77 | next();
|
78 | return;
|
79 | }
|
80 | (0, _send2.default)(req, req.baseUrl, { root: config.publicDirectory, index: 'index.html' }).on('error', function () {
|
81 | if (error) {
|
82 | next();
|
83 | return;
|
84 | }
|
85 | req.baseUrl = '/index.html';
|
86 | serveRequest(req, res, next, true);
|
87 | }).on('directory', function () {
|
88 | return next();
|
89 | }).pipe(res);
|
90 | });
|
91 | pundle.pundle.onDidProcess(function (_ref2) {
|
92 | var filePath = _ref2.filePath;
|
93 |
|
94 | if (filePath.indexOf('$root') === 0 && filePath.indexOf('node_modules') === -1 && filePath.indexOf('../') === -1) {
|
95 | cli.log(_chalk2.default.dim(filePath) + ' ' + _chalk2.default.green(TICK));
|
96 | }
|
97 | });
|
98 | return pundle;
|
99 | });
|
100 |
|
101 | return function getPundleInstance(_x, _x2, _x3, _x4, _x5, _x6) {
|
102 | return _ref.apply(this, arguments);
|
103 | };
|
104 | }();
|
105 |
|
106 | exports.getRandomNumber = getRandomNumber;
|
107 | exports.normalizeConfig = normalizeConfig;
|
108 |
|
109 | var _path = require('path');
|
110 |
|
111 | var _path2 = _interopRequireDefault(_path);
|
112 |
|
113 | var _send = require('send');
|
114 |
|
115 | var _send2 = _interopRequireDefault(_send);
|
116 |
|
117 | var _chalk = require('chalk');
|
118 |
|
119 | var _chalk2 = _interopRequireDefault(_chalk);
|
120 |
|
121 | var _pundle2 = require('pundle');
|
122 |
|
123 | var _pundle3 = _interopRequireDefault(_pundle2);
|
124 |
|
125 | var _pundleDev = require('pundle-dev');
|
126 |
|
127 | var _pundleDev2 = _interopRequireDefault(_pundleDev);
|
128 |
|
129 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
130 |
|
131 | function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { return step("next", value); }, function (err) { return step("throw", err); }); } } return step("next"); }); }; }
|
132 |
|
133 | var X = exports.X = '✗';
|
134 | var TICK = exports.TICK = '✓';
|
135 |
|
136 |
|
137 | function getRandomNumber(min, max) {
|
138 | return Math.floor(Math.random() * (max - min)) + min;
|
139 | }
|
140 |
|
141 |
|
142 |
|
143 |
|
144 | function normalizeConfig(projectPath, givenConfig) {
|
145 | var config = Object.assign({}, givenConfig, {
|
146 | babel: Object.assign({}, givenConfig.babel)
|
147 | });
|
148 | if (config.bundleDirectory.substr(0, 1) === '.') {
|
149 | config.bundleDirectory = _path2.default.resolve(projectPath, config.bundleDirectory);
|
150 | }
|
151 | if (config.publicDirectory.substr(0, 1) === '.') {
|
152 | config.publicDirectory = _path2.default.resolve(projectPath, config.publicDirectory);
|
153 | }
|
154 | if (!config.babel || _typeof(config.babel) !== 'object') {
|
155 | config.babel = { plugins: [], presets: [] };
|
156 | }
|
157 | if (!Array.isArray(config.babel.plugins)) {
|
158 | config.babel.plugins = [];
|
159 | } else {
|
160 | config.babel.plugins = config.babel.plugins.slice();
|
161 | }
|
162 | if (!Array.isArray(config.babel.presets)) {
|
163 | config.babel.presets = [];
|
164 | } else {
|
165 | config.babel.presets = config.babel.presets.slice();
|
166 | }
|
167 | if (config.babel.presets.indexOf('babel-preset-motion') !== -1) {
|
168 | config.babel.presets.splice(config.babel.presets.indexOf('babel-preset-motion'), 1, require.resolve(config.includePolyfills ? 'babel-preset-es2015' : 'babel-preset-es2015-sane'), require.resolve('babel-preset-motion'));
|
169 | }
|
170 | config.babel.plugins = config.babel.plugins.map(function (givenEntry) {
|
171 | if (!givenEntry) {
|
172 | return givenEntry;
|
173 | }
|
174 | var entry = Array.isArray(givenEntry) ? givenEntry : [givenEntry, {}];
|
175 | if (entry[0] === 'motion-style/transform') {
|
176 | entry[0] = require.resolve('motion-style/transform');
|
177 | }
|
178 | if (!_path2.default.isAbsolute(entry[0])) {
|
179 | if (entry[0].substr(0, 1) === '.') {
|
180 | entry[0] = _path2.default.resolve(projectPath, entry[0]);
|
181 | } else {
|
182 | entry[0] = _path2.default.join(projectPath, 'node_modules', entry[0]);
|
183 | }
|
184 | }
|
185 | return entry;
|
186 | });
|
187 | return config;
|
188 | }
|
189 |
|
\ | No newline at end of file |