UNPKG

3.04 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7var rollupCommonJs = _interopDefault(require('rollup-plugin-commonjs'));
8var rollupJson = _interopDefault(require('rollup-plugin-json'));
9var rollupNodeResolve = _interopDefault(require('rollup-plugin-node-resolve'));
10var rollupPluginTerser = require('rollup-plugin-terser');
11var rollupBabel = _interopDefault(require('rollup-plugin-babel'));
12var babelPluginDynamicImportSyntax = _interopDefault(require('@babel/plugin-syntax-dynamic-import'));
13var babelPluginImportMetaSyntax = _interopDefault(require('@babel/plugin-syntax-import-meta'));
14var babelPresetEnv = _interopDefault(require('@babel/preset-env'));
15var path = _interopDefault(require('path'));
16var fs = _interopDefault(require('fs'));
17var types = require('@pika/types');
18var rollup = require('rollup');
19
20async 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}
35function manifest(manifest, {
36 options
37}) {
38 if (options.entrypoint) {
39 manifest[options.entrypoint] = 'dist-web/index.bundled.js';
40 }
41}
42async 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
85exports.beforeJob = beforeJob;
86exports.build = build;
87exports.manifest = manifest;
88//# sourceMappingURL=index.js.map