1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
6 |
|
7 | var rollupCommonJs = _interopDefault(require('rollup-plugin-commonjs'));
|
8 | var rollupJson = _interopDefault(require('rollup-plugin-json'));
|
9 | var rollupNodeResolve = _interopDefault(require('rollup-plugin-node-resolve'));
|
10 | var rollupPluginTerser = require('rollup-plugin-terser');
|
11 | var rollupBabel = _interopDefault(require('rollup-plugin-babel'));
|
12 | var babelPluginDynamicImportSyntax = _interopDefault(require('@babel/plugin-syntax-dynamic-import'));
|
13 | var babelPluginImportMetaSyntax = _interopDefault(require('@babel/plugin-syntax-import-meta'));
|
14 | var babelPresetEnv = _interopDefault(require('@babel/preset-env'));
|
15 | var path = _interopDefault(require('path'));
|
16 | var fs = _interopDefault(require('fs'));
|
17 | var types = require('@pika/types');
|
18 | var rollup = require('rollup');
|
19 |
|
20 | async function beforeJob({
|
21 | out
|
22 | }) {
|
23 | const srcDirectory = path.join(out, 'dist-web/');
|
24 |
|
25 | if (!fs.existsSync(srcDirectory)) {
|
26 | throw new types.MessageError('"dist-web/" does not exist. "plugin-bundle-web" requires "plugin-build-dev" to precede in pipeline.');
|
27 | }
|
28 |
|
29 | const srcEntrypoint = path.join(out, 'dist-web/index.js');
|
30 |
|
31 | if (!fs.existsSync(srcEntrypoint)) {
|
32 | throw new types.MessageError('"dist-web/index.js" is the expected standard entrypoint, but it does not exist.');
|
33 | }
|
34 | }
|
35 | function manifest(manifest, {
|
36 | options
|
37 | }) {
|
38 | if (options.entrypoint) {
|
39 | manifest[options.entrypoint] = 'dist-web/index.bundled.js';
|
40 | }
|
41 | }
|
42 | async function build({
|
43 | out,
|
44 | options,
|
45 | reporter
|
46 | }) {
|
47 | const readFromWeb = path.join(out, 'dist-web', 'index.js');
|
48 | const writeToWeb = path.join(out, 'dist-web');
|
49 | const writeToWebBundled = path.join(writeToWeb, 'index.bundled.js');
|
50 | const result = await rollup.rollup({
|
51 | input: readFromWeb,
|
52 | plugins: [rollupNodeResolve({
|
53 | preferBuiltins: true,
|
54 | browser: !!options.browser
|
55 | }), rollupCommonJs({
|
56 | include: 'node_modules/**',
|
57 | sourceMap: false,
|
58 | namedExports: options.namedExports
|
59 | }), rollupJson({
|
60 | include: 'node_modules/**',
|
61 | compact: true
|
62 | }), rollupBabel({
|
63 | babelrc: false,
|
64 | compact: false,
|
65 | presets: [[babelPresetEnv, {
|
66 | modules: false,
|
67 | targets: options.targets || {
|
68 | esmodules: true
|
69 | }
|
70 | }]],
|
71 | plugins: [babelPluginDynamicImportSyntax, babelPluginImportMetaSyntax]
|
72 | }), options.minify !== false ? rollupPluginTerser.terser(typeof options.minify === 'object' ? options.minify : undefined) : undefined]
|
73 | });
|
74 | await result.write({
|
75 | dir: writeToWeb,
|
76 | entryFileNames: '[name].bundled.js',
|
77 | chunkFileNames: '[name]-[hash].bundled.js',
|
78 | format: 'esm',
|
79 | exports: 'named',
|
80 | sourcemap: options.sourcemap === undefined ? true : options.sourcemap
|
81 | });
|
82 | reporter.created(writeToWebBundled);
|
83 | }
|
84 |
|
85 | exports.beforeJob = beforeJob;
|
86 | exports.build = build;
|
87 | exports.manifest = manifest;
|
88 |
|