1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports["default"] = getRollupConfig;
|
9 |
|
10 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
11 |
|
12 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
13 |
|
14 | var _path = _interopRequireDefault(require("path"));
|
15 |
|
16 | var _rollupPluginTerser = require("rollup-plugin-terser");
|
17 |
|
18 | var _pluginUrl = _interopRequireDefault(require("@rollup/plugin-url"));
|
19 |
|
20 | var _pluginAlias = _interopRequireDefault(require("@rollup/plugin-alias"));
|
21 |
|
22 | var _rollup = _interopRequireDefault(require("@svgr/rollup"));
|
23 |
|
24 | var _pluginJson = _interopRequireDefault(require("@rollup/plugin-json"));
|
25 |
|
26 | var _pluginInject = _interopRequireDefault(require("@rollup/plugin-inject"));
|
27 |
|
28 | var _pluginBabel = _interopRequireDefault(require("@rollup/plugin-babel"));
|
29 |
|
30 | var _pluginNodeResolve = _interopRequireDefault(require("@rollup/plugin-node-resolve"));
|
31 |
|
32 | var _pluginReplace = _interopRequireDefault(require("@rollup/plugin-replace"));
|
33 |
|
34 | var _pluginCommonjs = _interopRequireDefault(require("@rollup/plugin-commonjs"));
|
35 |
|
36 | var _builtinModules = _interopRequireDefault(require("builtin-modules"));
|
37 |
|
38 | var _rollupPluginVisualizer = _interopRequireDefault(require("rollup-plugin-visualizer"));
|
39 |
|
40 | var _rollupPluginPostcss = _interopRequireDefault(require("rollup-plugin-postcss"));
|
41 |
|
42 | var _lessPluginNpmImport = _interopRequireDefault(require("less-plugin-npm-import"));
|
43 |
|
44 | var _cssnano = _interopRequireDefault(require("cssnano"));
|
45 |
|
46 | var _autoprefixer = _interopRequireDefault(require("autoprefixer"));
|
47 |
|
48 | var _stanUtils = require("stan-utils");
|
49 |
|
50 | var _getBabelConfig = _interopRequireDefault(require("./get-babel-config"));
|
51 |
|
52 | var _utils = require("./utils");
|
53 |
|
54 | function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
55 |
|
56 | function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
57 |
|
58 | function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
59 |
|
60 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
61 |
|
62 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
63 |
|
64 | function getRollupConfig(opts) {
|
65 | var _umd$cjs$esm$system, _moduleOpts$target, _moduleOpts$sourcemap, _moduleOpts$file, _moduleOpts$runtimeHe, _ref, _ref2;
|
66 |
|
67 | var format = opts.type,
|
68 | cwd = opts.cwd,
|
69 | bundleOpt = opts.bundleOpt,
|
70 | verbose = opts.verbose;
|
71 | var entry = bundleOpt.entry,
|
72 | esm = bundleOpt.esm,
|
73 | cjs = bundleOpt.cjs,
|
74 | umd = bundleOpt.umd,
|
75 | system = bundleOpt.system,
|
76 | file = bundleOpt.file,
|
77 | _bundleOpt$target = bundleOpt.target,
|
78 | target = _bundleOpt$target === void 0 ? 'browser' : _bundleOpt$target,
|
79 | _bundleOpt$extractCSS = bundleOpt.extractCSS,
|
80 | extractCSS = _bundleOpt$extractCSS === void 0 ? false : _bundleOpt$extractCSS,
|
81 | _bundleOpt$injectCSS = bundleOpt.injectCSS,
|
82 | injectCSS = _bundleOpt$injectCSS === void 0 ? true : _bundleOpt$injectCSS,
|
83 | analyze = bundleOpt.analyze,
|
84 | disableTypeCheck = bundleOpt.disableTypeCheck,
|
85 | minify = bundleOpt.minify,
|
86 | minifyOnly = bundleOpt.minifyOnly,
|
87 | _runtimeHelpers = bundleOpt.runtimeHelpers,
|
88 | sourcemap = bundleOpt.sourcemap,
|
89 | _bundleOpt$babelPlugi = bundleOpt.babelPlugins,
|
90 | babelPlugins = _bundleOpt$babelPlugi === void 0 ? [] : _bundleOpt$babelPlugi,
|
91 | _bundleOpt$extraBabel = bundleOpt.extraBabelPlugins,
|
92 | extraBabelPlugins = _bundleOpt$extraBabel === void 0 ? [] : _bundleOpt$extraBabel,
|
93 | _bundleOpt$babelPrese = bundleOpt.babelPresets,
|
94 | babelPresets = _bundleOpt$babelPrese === void 0 ? [] : _bundleOpt$babelPrese,
|
95 | _bundleOpt$extraBabel2 = bundleOpt.extraBabelPresets,
|
96 | extraBabelPresets = _bundleOpt$extraBabel2 === void 0 ? [] : _bundleOpt$extraBabel2,
|
97 | injectOpts = bundleOpt.injectOpts,
|
98 | terserOpts = bundleOpt.terserOpts,
|
99 | replaceOpts = bundleOpt.replaceOpts,
|
100 | commonjsOpts = bundleOpt.commonjsOpts,
|
101 | nodeResolveOpts = bundleOpt.nodeResolveOpts,
|
102 | typescript2Opts = bundleOpt.typescript2Opts,
|
103 | postcssOpts = bundleOpt.postcssOpts,
|
104 | aliasOpts = bundleOpt.aliasOpts,
|
105 | visualizerOpts = bundleOpt.visualizerOpts,
|
106 | _bundleOpt$extraExter = bundleOpt.extraExternals,
|
107 | extraExternals = _bundleOpt$extraExter === void 0 ? [] : _bundleOpt$extraExter,
|
108 | _bundleOpt$externalsE = bundleOpt.externalsExclude,
|
109 | externalsExclude = _bundleOpt$externalsE === void 0 ? [] : _bundleOpt$externalsE,
|
110 | _bundleOpt$extraRollu = bundleOpt.extraRollupPlugins,
|
111 | extraRollupPlugins = _bundleOpt$extraRollu === void 0 ? [] : _bundleOpt$extraRollu,
|
112 | _bundleOpt$externalPe = bundleOpt.externalPeerDependenciesOnly,
|
113 | externalPeerDependenciesOnly = _bundleOpt$externalPe === void 0 ? false : _bundleOpt$externalPe,
|
114 | vuePluginOpts = bundleOpt.vuePluginOpts;
|
115 |
|
116 | var input = _path["default"].join(cwd, entry);
|
117 |
|
118 | var entryExt = _path["default"].extname(entry);
|
119 |
|
120 | var isTypeScript = entryExt === '.ts' || entryExt === '.tsx' || (0, _utils.checkTSConfigIsExist)(cwd);
|
121 | var extensions = ['.js', '.jsx', '.ts', '.tsx', '.es6', '.es', '.mjs'];
|
122 | var moduleOpts = (_umd$cjs$esm$system = {
|
123 | umd: umd,
|
124 | cjs: cjs,
|
125 | esm: esm,
|
126 | system: system
|
127 | }) === null || _umd$cjs$esm$system === void 0 ? void 0 : _umd$cjs$esm$system[format];
|
128 | var pkg = {};
|
129 |
|
130 | try {
|
131 | pkg = require(_path["default"].join(cwd, 'package.json'));
|
132 | } catch (e) {}
|
133 |
|
134 | var _target = (_moduleOpts$target = moduleOpts === null || moduleOpts === void 0 ? void 0 : moduleOpts.target) !== null && _moduleOpts$target !== void 0 ? _moduleOpts$target : target;
|
135 |
|
136 | var _sourcemap = (_moduleOpts$sourcemap = moduleOpts === null || moduleOpts === void 0 ? void 0 : moduleOpts.sourcemap) !== null && _moduleOpts$sourcemap !== void 0 ? _moduleOpts$sourcemap : sourcemap;
|
137 |
|
138 | var _minifyOnly = (moduleOpts === null || moduleOpts === void 0 ? void 0 : moduleOpts.minifyOnly) || minifyOnly;
|
139 |
|
140 | var _minify = _minifyOnly || (moduleOpts === null || moduleOpts === void 0 ? void 0 : moduleOpts.minify) || minify;
|
141 |
|
142 | var _file = (_moduleOpts$file = moduleOpts === null || moduleOpts === void 0 ? void 0 : moduleOpts.file) !== null && _moduleOpts$file !== void 0 ? _moduleOpts$file : file;
|
143 |
|
144 | var browser = _target === 'browser';
|
145 |
|
146 | if (['.tsx', '.jsx'].includes(_path["default"].extname(entry))) {
|
147 | browser = true;
|
148 | }
|
149 |
|
150 | var runtimeHelpers = (_moduleOpts$runtimeHe = moduleOpts === null || moduleOpts === void 0 ? void 0 : moduleOpts.runtimeHelpers) !== null && _moduleOpts$runtimeHe !== void 0 ? _moduleOpts$runtimeHe : _runtimeHelpers;
|
151 | var babelHelpers = runtimeHelpers ? 'runtime' : 'bundled';
|
152 |
|
153 | var babelOptions = _objectSpread(_objectSpread({}, (0, _getBabelConfig["default"])({
|
154 | type: format,
|
155 | typescript: true,
|
156 | target: _target,
|
157 | runtimeHelpers: runtimeHelpers,
|
158 | cwd: cwd
|
159 | })), {}, {
|
160 | babelrc: false,
|
161 | configFile: false,
|
162 | exclude: /\/node_modules\//,
|
163 | babelHelpers: babelHelpers,
|
164 | extensions: extensions
|
165 | });
|
166 |
|
167 | if (babelPresets.length) babelOptions.presets = babelPresets;
|
168 | if (babelPlugins.length) babelOptions.plugins = babelPlugins;
|
169 |
|
170 | (_ref = babelOptions.presets).push.apply(_ref, (0, _toConsumableArray2["default"])(extraBabelPresets));
|
171 |
|
172 | (_ref2 = babelOptions.plugins).push.apply(_ref2, (0, _toConsumableArray2["default"])(extraBabelPlugins));
|
173 |
|
174 | function getPlugins(format, isMin) {
|
175 | var _RollupPluginVue$defa, _postcssOpts$use;
|
176 |
|
177 | var RollupPluginVue = (0, _utils.getNodeModulePKG)('rollup-plugin-vue');
|
178 | var isUMD = format === 'umd';
|
179 | return [(_RollupPluginVue$defa = RollupPluginVue["default"]) === null || _RollupPluginVue$defa === void 0 ? void 0 : _RollupPluginVue$defa.call(RollupPluginVue, _objectSpread(_objectSpread({
|
180 | css: true
|
181 | }, RollupPluginVue.version.includes('6') ? {
|
182 | compileTemplate: true
|
183 | } : {}), vuePluginOpts)), aliasOpts && (0, _pluginAlias["default"])(aliasOpts), (0, _rollup["default"])(), (0, _pluginUrl["default"])(), (0, _pluginJson["default"])(), (0, _rollupPluginPostcss["default"])(_objectSpread(_objectSpread({
|
184 | extract: extractCSS,
|
185 | inject: injectCSS,
|
186 | minimize: !!isMin
|
187 | }, postcssOpts), {}, {
|
188 | use: _objectSpread(_objectSpread({
|
189 | stylus: {},
|
190 | sass: {}
|
191 | }, postcssOpts === null || postcssOpts === void 0 ? void 0 : postcssOpts.use), {}, {
|
192 |
|
193 | less: _objectSpread({
|
194 | plugins: [new _lessPluginNpmImport["default"]({
|
195 | prefix: '~'
|
196 | })],
|
197 | javascriptEnabled: true
|
198 | }, postcssOpts === null || postcssOpts === void 0 ? void 0 : (_postcssOpts$use = postcssOpts.use) === null || _postcssOpts$use === void 0 ? void 0 : _postcssOpts$use['less'])
|
199 | }),
|
200 | plugins: [].concat((0, _toConsumableArray2["default"])((postcssOpts === null || postcssOpts === void 0 ? void 0 : postcssOpts.plugins) || []), [isMin && (0, _cssnano["default"])({
|
201 | preset: 'default'
|
202 | }), (0, _autoprefixer["default"])()]).filter(Boolean)
|
203 | })), injectOpts && (0, _pluginInject["default"])(injectOpts), (replaceOpts || isUMD) && (0, _pluginReplace["default"])(_objectSpread({
|
204 | 'process.env.NODE_ENV': JSON.stringify('production')
|
205 | }, replaceOpts)), isTypeScript && require('rollup-plugin-typescript2')(_objectSpread({
|
206 | cwd: cwd,
|
207 | clean: true,
|
208 | tsconfigDefaults: {
|
209 | compilerOptions: {
|
210 | declaration: true,
|
211 | sourceMap: _sourcemap,
|
212 | jsx: 'preserve'
|
213 | }
|
214 | },
|
215 | verbosity: verbose ? 3 : 1,
|
216 | cacheRoot: "./node_modules/.cache/.ts2_cache_".concat(format),
|
217 | typescript: require('typescript'),
|
218 | useTsconfigDeclarationDir: true,
|
219 | check: !disableTypeCheck
|
220 | }, typescript2Opts)), (0, _pluginCommonjs["default"])(commonjsOpts), (0, _pluginNodeResolve["default"])(_objectSpread({
|
221 | mainFields: ['module', 'jsnext:main', 'main'],
|
222 | browser: browser,
|
223 | extensions: extensions,
|
224 | preferBuiltins: target === 'node'
|
225 | }, nodeResolveOpts)), (0, _pluginBabel["default"])(babelOptions), isMin && (0, _rollupPluginTerser.terser)(_objectSpread({
|
226 | compress: {
|
227 | pure_getters: true,
|
228 | unsafe: true,
|
229 | unsafe_comps: true
|
230 | }
|
231 | }, terserOpts)), (analyze || !_stanUtils.lodash.isEmpty(visualizerOpts)) && (0, _rollupPluginVisualizer["default"])(visualizerOpts)].concat((0, _toConsumableArray2["default"])(extraRollupPlugins)).filter(Boolean);
|
232 | }
|
233 |
|
234 | function getExternal() {
|
235 | var _pkg;
|
236 |
|
237 | var PKGs = (0, _toConsumableArray2["default"])(extraExternals);
|
238 | PKGs.push.apply(PKGs, (0, _toConsumableArray2["default"])(Object.keys(((_pkg = pkg) === null || _pkg === void 0 ? void 0 : _pkg.peerDependencies) || {})));
|
239 |
|
240 | if (format !== 'umd') {
|
241 | if (!externalPeerDependenciesOnly) {
|
242 | var _pkg2;
|
243 |
|
244 | PKGs.push.apply(PKGs, (0, _toConsumableArray2["default"])(Object.keys(((_pkg2 = pkg) === null || _pkg2 === void 0 ? void 0 : _pkg2.dependencies) || {})));
|
245 | }
|
246 |
|
247 | if (runtimeHelpers) {
|
248 | PKGs.push(/@babel\/runtime/);
|
249 | }
|
250 | }
|
251 |
|
252 |
|
253 | if (!browser) {
|
254 | PKGs.concat(_builtinModules["default"]);
|
255 | }
|
256 |
|
257 | return PKGs.filter(function (v) {
|
258 | return !externalsExclude.includes(v);
|
259 | });
|
260 | }
|
261 |
|
262 | function getOutputFilePath() {
|
263 | var isMin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
264 | var isMJS = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
265 |
|
266 | function getExt() {
|
267 | return [''].concat((0, _toConsumableArray2["default"])([format, isMin && 'min', isMJS ? 'mjs' : 'js'].filter(function (v) {
|
268 | return v;
|
269 | }))).join('.');
|
270 | }
|
271 |
|
272 | var fileName = _file || _path["default"].basename(entry, entryExt);
|
273 |
|
274 | return _path["default"].join(cwd, "dist/".concat(fileName + getExt()));
|
275 | }
|
276 |
|
277 | var output = {
|
278 | format: format,
|
279 | sourcemap: _sourcemap,
|
280 | file: getOutputFilePath(),
|
281 | freeze: false
|
282 | };
|
283 | var externalArr = getExternal();
|
284 |
|
285 | if (format === 'cjs') {
|
286 | output.esModule = false;
|
287 | output.exports = 'auto';
|
288 | }
|
289 |
|
290 |
|
291 | if (format === 'umd') {
|
292 | var _umd = umd;
|
293 | var global = externalArr.reduce(function (globals, name) {
|
294 | if (name instanceof RegExp) name = name.source;
|
295 |
|
296 | if (name.match(/^[a-z_$][a-z0-9_\-$]*$/)) {
|
297 | globals[name] = _stanUtils.lodash.camelCase(name);
|
298 | }
|
299 |
|
300 | return globals;
|
301 | }, {});
|
302 |
|
303 | if (typeof (_umd === null || _umd === void 0 ? void 0 : _umd.globals) === 'string') {
|
304 | Object.assign(global, (0, _utils.parseMappingArgument)(_umd === null || _umd === void 0 ? void 0 : _umd.globals));
|
305 | } else {
|
306 | Object.assign(global, (_umd === null || _umd === void 0 ? void 0 : _umd.globals) || {});
|
307 | }
|
308 |
|
309 | output.globals = global;
|
310 | output.name = ((_umd === null || _umd === void 0 ? void 0 : _umd.name) || pkg.name && _stanUtils.lodash.camelCase(_path["default"].basename(pkg.name)) || '').replace(/^global\./, '');
|
311 | }
|
312 |
|
313 | var onwarn = function onwarn(warning, next) {};
|
314 |
|
315 | var external = function external(source) {
|
316 | var isMatch = function () {
|
317 | function test(arr, id) {
|
318 | var generated = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
319 |
|
320 | var _iterator = _createForOfIteratorHelper(arr),
|
321 | _step;
|
322 |
|
323 | try {
|
324 | for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
325 | var exp = _step.value;
|
326 | if (exp === id) return true;
|
327 |
|
328 | if (_stanUtils.lodash.isRegExp(exp) && exp.test(id)) {
|
329 | if (verbose) {
|
330 | console.log(_stanUtils.chalk.yellow("WARN The rule \"".concat(exp, "\" takes effect and the file \"").concat((0, _stanUtils.relativeNormalize)(id), "\" ").concat(generated ? 'will be compiled' : 'will not be compiled', ".")));
|
331 | }
|
332 |
|
333 | return true;
|
334 | }
|
335 | }
|
336 | } catch (err) {
|
337 | _iterator.e(err);
|
338 | } finally {
|
339 | _iterator.f();
|
340 | }
|
341 |
|
342 | return false;
|
343 | }
|
344 |
|
345 | if (test(externalsExclude, source, true)) return false;
|
346 | return test(externalArr, source);
|
347 | }();
|
348 |
|
349 | if (isMatch && source === input) {
|
350 | console.log(_stanUtils.chalk.red("The parameter \"externalArr\" matches the entry file, force mismatch, please check configuration"));
|
351 | return false;
|
352 | }
|
353 |
|
354 | return isMatch;
|
355 | };
|
356 |
|
357 | switch (format) {
|
358 | case 'system':
|
359 | case 'umd':
|
360 | case 'esm':
|
361 | case 'cjs':
|
362 | var plugins = getPlugins(format);
|
363 | return [!_minifyOnly && {
|
364 | input: input,
|
365 | output: output,
|
366 | inlineDynamicImports: true,
|
367 | plugins: plugins,
|
368 | external: external,
|
369 | onwarn: onwarn
|
370 | }, !_minifyOnly && (moduleOpts === null || moduleOpts === void 0 ? void 0 : moduleOpts.mjs) && {
|
371 | input: input,
|
372 | output: _objectSpread(_objectSpread({}, output), {}, {
|
373 | file: getOutputFilePath(false, true)
|
374 | }),
|
375 | inlineDynamicImports: true,
|
376 | plugins: plugins,
|
377 | onwarn: onwarn,
|
378 | external: external
|
379 | }, (_minifyOnly || _minify) && {
|
380 | input: input,
|
381 | output: _objectSpread(_objectSpread({}, output), {}, {
|
382 | file: getOutputFilePath(true)
|
383 | }),
|
384 | inlineDynamicImports: true,
|
385 | plugins: getPlugins(format, true),
|
386 | external: external,
|
387 | onwarn: onwarn
|
388 | }].filter(Boolean);
|
389 |
|
390 | default:
|
391 | throw new Error("Unsupported type ".concat(format));
|
392 | }
|
393 | } |
\ | No newline at end of file |