Skip to content

Commit 627027f

Browse files
zigomiryyx990803
authored andcommitted
feat(esm build): build ES modules for browser (vuejs#2705)
1 parent c3c2140 commit 627027f

File tree

4 files changed

+30
-13
lines changed

4 files changed

+30
-13
lines changed

build/build.js

+10-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const fs = require('fs')
22
const path = require('path')
33
const zlib = require('zlib')
4-
const uglify = require('uglify-js')
4+
const terser = require('terser')
55
const rollup = require('rollup')
66
const configs = require('./configs')
77

@@ -27,22 +27,24 @@ function build (builds) {
2727
}
2828

2929
function buildEntry ({ input, output }) {
30-
const isProd = /min\.js$/.test(output.file)
30+
const { file, banner } = output
31+
const isProd = /min\.js$/.test(file)
3132
return rollup.rollup(input)
3233
.then(bundle => bundle.generate(output))
3334
.then(({ code }) => {
3435
if (isProd) {
35-
const minified = uglify.minify(code, {
36+
const minified = (banner ? banner + '\n' : '') + terser.minify(code, {
37+
toplevel: true,
3638
output: {
37-
preamble: output.banner,
38-
/* eslint-disable camelcase */
3939
ascii_only: true
40-
/* eslint-enable camelcase */
40+
},
41+
compress: {
42+
pure_funcs: ['makeMap']
4143
}
4244
}).code
43-
return write(output.file, minified, true)
45+
return write(file, minified, true)
4446
} else {
45-
return write(output.file, code)
47+
return write(file, code)
4648
}
4749
})
4850
}

build/configs.js

+17-2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,18 @@ module.exports = [
3333
{
3434
file: resolve('dist/vue-router.esm.js'),
3535
format: 'es'
36+
},
37+
{
38+
file: resolve('dist/vue-router.esm.browser.js'),
39+
format: 'es',
40+
env: 'development',
41+
transpile: false
42+
},
43+
{
44+
file: resolve('dist/vue-router.esm.browser.min.js'),
45+
format: 'es',
46+
env: 'production',
47+
transpile: false
3648
}
3749
].map(genConfig)
3850

@@ -46,8 +58,7 @@ function genConfig (opts) {
4658
cjs(),
4759
replace({
4860
__VERSION__: version
49-
}),
50-
buble()
61+
})
5162
]
5263
},
5364
output: {
@@ -64,5 +75,9 @@ function genConfig (opts) {
6475
}))
6576
}
6677

78+
if (opts.transpile !== false) {
79+
config.input.plugins.push(buble())
80+
}
81+
6782
return config
6883
}

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@
8282
"rollup-plugin-replace": "^2.0.0",
8383
"rollup-watch": "^4.0.0",
8484
"selenium-server": "^2.53.1",
85+
"terser": "^3.17.0",
8586
"typescript": "^3.3.1",
86-
"uglify-js": "^3.3.13",
8787
"vue": "^2.5.16",
8888
"vue-loader": "^15.2.1",
8989
"vue-template-compiler": "^2.5.16",

yarn.lock

+2-2
Original file line numberDiff line numberDiff line change
@@ -9828,7 +9828,7 @@ terser-webpack-plugin@^1.1.0:
98289828
webpack-sources "^1.1.0"
98299829
worker-farm "^1.5.2"
98309830

9831-
terser@^3.16.1:
9831+
terser@^3.16.1, terser@^3.17.0:
98329832
version "3.17.0"
98339833
resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2"
98349834
integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==
@@ -10078,7 +10078,7 @@ [email protected]:
1007810078
commander "~2.19.0"
1007910079
source-map "~0.6.1"
1008010080

10081-
uglify-js@^3.1.4, uglify-js@^3.3.13:
10081+
uglify-js@^3.1.4:
1008210082
version "3.4.9"
1008310083
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
1008410084
integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==

0 commit comments

Comments
 (0)