Skip to content

Commit 85309f5

Browse files
authored
feat: provide esm browser bundles (#383)
1 parent 506247b commit 85309f5

File tree

4 files changed

+69
-19
lines changed

4 files changed

+69
-19
lines changed

build/build.js

+45-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
const fs = require('fs')
22
const path = require('path')
33
const zlib = require('zlib')
4-
const uglify = require('uglify-js')
4+
const uglify = require('uglify-es')
55
const rollup = require('rollup')
66
const replace = require('rollup-plugin-replace')
7+
const babel = require('rollup-plugin-babel')
78
const version = process.env.VERSION || require('../package.json').version
89
const banner =
910
`/**
@@ -18,6 +19,31 @@ if (!fs.existsSync('dist')) {
1819

1920
const resolve = _path => path.resolve(__dirname, '../', _path)
2021

22+
const babelConfigForModern = {
23+
presets: [
24+
[
25+
'@babel/env',
26+
{
27+
modules: false,
28+
targets: {
29+
esmodules: true
30+
}
31+
}
32+
]
33+
]
34+
}
35+
36+
const babelConfigForLegacy = {
37+
presets: [
38+
[
39+
'@babel/env',
40+
{
41+
modules: false
42+
}
43+
]
44+
]
45+
}
46+
2147
build([
2248
{
2349
file: resolve('dist/vue-class-component.js'),
@@ -36,6 +62,16 @@ build([
3662
{
3763
file: resolve('dist/vue-class-component.esm.js'),
3864
format: 'esm'
65+
},
66+
{
67+
file: resolve('dist/vue-class-component.esm.browser.js'),
68+
format: 'esm',
69+
env: 'development'
70+
},
71+
{
72+
file: resolve('dist/vue-class-component.esm.browser.min.js'),
73+
format: 'esm',
74+
env: 'production'
3975
}
4076
].map(genConfig))
4177

@@ -44,7 +80,13 @@ function genConfig (opts) {
4480
input: {
4581
input: resolve('lib/index.js'),
4682
external: ['vue'],
47-
plugins: []
83+
plugins: [
84+
babel(
85+
opts.format === 'esm' && typeof opts.env === 'string'
86+
? babelConfigForModern
87+
: babelConfigForLegacy
88+
)
89+
]
4890
},
4991
output: {
5092
file: opts.file,
@@ -88,7 +130,7 @@ function buildEntry ({ input, output }) {
88130
.then(bundle => bundle.generate(output))
89131
.then(({ code }) => {
90132
if (isProd) {
91-
var minified = uglify.minify(code, {
133+
const minified = uglify.minify(code, {
92134
output: {
93135
preamble: output.banner,
94136
ascii_only: true

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,13 @@
5656
"reflect-metadata": "^0.1.12",
5757
"rimraf": "^2.6.2",
5858
"rollup": "^0.66.5",
59+
"rollup-plugin-babel": "^4.3.3",
5960
"rollup-plugin-replace": "^2.0.0",
6061
"testdouble": "^3.5.0",
6162
"ts-loader": "^5.2.1",
6263
"typescript": "^3.1.1",
6364
"typescript-eslint-parser": "^20.0.0",
64-
"uglify-js": "^3.3.10",
65+
"uglify-es": "^3.3.9",
6566
"vue": "^2.5.13",
6667
"vue-loader": "^15.4.2",
6768
"vue-template-compiler": "^2.5.13",

tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"compilerOptions": {
3-
"target": "es5",
3+
"target": "esnext",
44
"lib": [
55
"dom",
66
"es2015"

yarn.lock

+21-14
Original file line numberDiff line numberDiff line change
@@ -1550,11 +1550,6 @@ commander@~2.13.0:
15501550
resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
15511551
integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==
15521552

1553-
commander@~2.17.1:
1554-
version "2.17.1"
1555-
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
1556-
integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
1557-
15581553
commondir@^1.0.1:
15591554
version "1.0.1"
15601555
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -2219,6 +2214,11 @@ estree-walker@^0.5.2:
22192214
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39"
22202215
integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==
22212216

2217+
estree-walker@^0.6.1:
2218+
version "0.6.1"
2219+
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
2220+
integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
2221+
22222222
esutils@^2.0.2:
22232223
version "2.0.2"
22242224
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
@@ -4397,6 +4397,14 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
43974397
hash-base "^3.0.0"
43984398
inherits "^2.0.1"
43994399

4400+
rollup-plugin-babel@^4.3.3:
4401+
version "4.3.3"
4402+
resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz#7eb5ac16d9b5831c3fd5d97e8df77ba25c72a2aa"
4403+
integrity sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw==
4404+
dependencies:
4405+
"@babel/helper-module-imports" "^7.0.0"
4406+
rollup-pluginutils "^2.8.1"
4407+
44004408
rollup-plugin-replace@^2.0.0:
44014409
version "2.1.0"
44024410
resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.1.0.tgz#f9c07a4a89a2f8be912ee54b3f0f68d91e9ed0ae"
@@ -4414,6 +4422,13 @@ rollup-pluginutils@^2.0.1:
44144422
estree-walker "^0.5.2"
44154423
micromatch "^2.3.11"
44164424

4425+
rollup-pluginutils@^2.8.1:
4426+
version "2.8.2"
4427+
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
4428+
integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
4429+
dependencies:
4430+
estree-walker "^0.6.1"
4431+
44174432
rollup@^0.66.5:
44184433
version "0.66.5"
44194434
resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.66.5.tgz#49b109d3db4772301d84b8ed9617a4481e9a8042"
@@ -4954,22 +4969,14 @@ typescript@^3.1.1:
49544969
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.1.tgz#3362ba9dd1e482ebb2355b02dfe8bcd19a2c7c96"
49554970
integrity sha512-Veu0w4dTc/9wlWNf2jeRInNodKlcdLgemvPsrNpfu5Pq39sgfFjvIIgTsvUHCoLBnMhPoUA+tFxsXjU6VexVRQ==
49564971

4957-
uglify-es@^3.3.4:
4972+
uglify-es@^3.3.4, uglify-es@^3.3.9:
49584973
version "3.3.9"
49594974
resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677"
49604975
integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==
49614976
dependencies:
49624977
commander "~2.13.0"
49634978
source-map "~0.6.1"
49644979

4965-
uglify-js@^3.3.10:
4966-
version "3.4.9"
4967-
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
4968-
integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==
4969-
dependencies:
4970-
commander "~2.17.1"
4971-
source-map "~0.6.1"
4972-
49734980
uglifyjs-webpack-plugin@^1.2.4:
49744981
version "1.3.0"
49754982
resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de"

0 commit comments

Comments
 (0)