|
1 | | -import { minify } from 'terser'; |
2 | 1 | import builder from '@core-js/builder'; |
3 | | -import config from '@core-js/builder/config.mjs'; |
4 | 2 |
|
5 | 3 | const { cyan, green } = chalk; |
6 | 4 | const ESMODULES = argv._.includes('esmodules'); |
7 | 5 | const BUNDLED_NAME = argv._.includes('bundled-name') ? argv._[argv._.indexOf('bundled-name') + 1] : 'index'; |
8 | 6 | const MINIFIED_NAME = argv._.includes('minified-name') ? argv._[argv._.indexOf('minified-name') + 1] : 'minified'; |
9 | 7 | const PATH = 'packages/core-js-bundle/'; |
10 | 8 |
|
| 9 | +const options = ESMODULES ? { targets: { esmodules: true } } : {}; |
| 10 | + |
11 | 11 | function log(kind, name, code) { |
12 | 12 | const size = (code.length / 1024).toFixed(2); |
13 | 13 | echo(green(`${ kind }: ${ cyan(`${ PATH }${ name }.js`) }, size: ${ cyan(`${ size }KB`) }`)); |
14 | 14 | } |
15 | 15 |
|
16 | | -async function bundle({ bundled, minified, options = {} }) { |
17 | | - const { script } = await builder({ modules: 'full', ...options }); |
18 | | - |
19 | | - log('bundling', bundled, script); |
20 | | - await fs.writeFile(`${ PATH }${ bundled }.js`, script); |
| 16 | +const { script } = await builder({ modules: 'full', minify: false, ...options }); |
21 | 17 |
|
22 | | - const { code, map } = await minify(script, { |
23 | | - ecma: 5, |
24 | | - safari10: true, |
25 | | - keep_fnames: true, |
26 | | - compress: { |
27 | | - hoist_funs: true, |
28 | | - hoist_vars: true, |
29 | | - passes: 2, |
30 | | - pure_getters: true, |
31 | | - // document.all detection case |
32 | | - typeofs: false, |
33 | | - unsafe_proto: true, |
34 | | - unsafe_undefined: true, |
35 | | - }, |
36 | | - format: { |
37 | | - max_line_len: 32000, |
38 | | - preamble: config.banner, |
39 | | - webkit: true, |
40 | | - // https://v8.dev/blog/preparser#pife |
41 | | - wrap_func_args: false, |
42 | | - }, |
43 | | - sourceMap: { |
44 | | - url: `${ minified }.js.map`, |
45 | | - }, |
46 | | - }); |
| 18 | +log('bundling', BUNDLED_NAME, script); |
| 19 | +await fs.writeFile(`${ PATH }${ BUNDLED_NAME }.js`, script); |
47 | 20 |
|
48 | | - await fs.writeFile(`${ PATH }${ minified }.js`, code); |
49 | | - await fs.writeFile(`${ PATH }${ minified }.js.map`, map); |
50 | | - log('minification', minified, code); |
51 | | -} |
| 21 | +const { script: minified } = await builder({ modules: 'full', minify: true, ...options }); |
52 | 22 |
|
53 | | -await bundle({ |
54 | | - bundled: BUNDLED_NAME, |
55 | | - minified: MINIFIED_NAME, |
56 | | - options: ESMODULES ? { targets: { esmodules: true } } : {}, |
57 | | -}); |
| 23 | +await fs.writeFile(`${ PATH }${ MINIFIED_NAME }.js`, minified); |
| 24 | +log('bundling minified', MINIFIED_NAME, minified); |
0 commit comments