Skip to content

Commit 3cc08fb

Browse files
committed
build: update build script
1 parent 836d9c1 commit 3cc08fb

File tree

5 files changed

+92
-96
lines changed

5 files changed

+92
-96
lines changed

build/build.js

Lines changed: 20 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -3,46 +3,13 @@ const path = require('path')
33
const zlib = require('zlib')
44
const uglify = require('uglify-js')
55
const rollup = require('rollup')
6-
const buble = require('rollup-plugin-buble')
7-
const flow = require('rollup-plugin-flow-no-whitespace')
8-
const cjs = require('rollup-plugin-commonjs')
9-
const node = require('rollup-plugin-node-resolve')
10-
const replace = require('rollup-plugin-replace')
11-
const version = process.env.VERSION || require('../package.json').version
12-
const banner =
13-
`/**
14-
* vue-router v${version}
15-
* (c) ${new Date().getFullYear()} Evan You
16-
* @license MIT
17-
*/`
6+
const configs = require('./configs')
187

198
if (!fs.existsSync('dist')) {
209
fs.mkdirSync('dist')
2110
}
2211

23-
const resolve = _path => path.resolve(__dirname, '../', _path)
24-
25-
build([
26-
// browser dev
27-
{
28-
dest: resolve('dist/vue-router.js'),
29-
format: 'umd',
30-
env: 'development'
31-
},
32-
{
33-
dest: resolve('dist/vue-router.min.js'),
34-
format: 'umd',
35-
env: 'production'
36-
},
37-
{
38-
dest: resolve('dist/vue-router.common.js'),
39-
format: 'cjs'
40-
},
41-
{
42-
dest: resolve('dist/vue-router.esm.js'),
43-
format: 'es'
44-
}
45-
].map(genConfig))
12+
build(Object.keys(configs).map(key => configs[key]))
4613

4714
function build (builds) {
4815
let built = 0
@@ -59,51 +26,24 @@ function build (builds) {
5926
next()
6027
}
6128

62-
function genConfig (opts) {
63-
const config = {
64-
entry: resolve('src/index.js'),
65-
dest: opts.dest,
66-
format: opts.format,
67-
banner,
68-
moduleName: 'VueRouter',
69-
plugins: [
70-
flow(),
71-
node(),
72-
cjs(),
73-
replace({
74-
__VERSION__: version
75-
}),
76-
buble()
77-
]
78-
}
79-
80-
if (opts.env) {
81-
config.plugins.unshift(replace({
82-
'process.env.NODE_ENV': JSON.stringify(opts.env)
83-
}))
84-
}
85-
86-
return config
87-
}
88-
89-
function buildEntry (config) {
90-
const isProd = /min\.js$/.test(config.dest)
91-
return rollup.rollup(config).then(bundle => {
92-
const code = bundle.generate(config).code
93-
if (isProd) {
94-
var minified = (config.banner ? config.banner + '\n' : '') + uglify.minify(code, {
95-
output: {
96-
ascii_only: true
97-
},
98-
compress: {
99-
pure_funcs: ['makeMap']
100-
}
101-
}).code
102-
return write(config.dest, minified, true)
103-
} else {
104-
return write(config.dest, code)
105-
}
106-
})
29+
function buildEntry ({ input, output }) {
30+
const isProd = /min\.js$/.test(output.file)
31+
return rollup.rollup(input)
32+
.then(bundle => bundle.generate(output))
33+
.then(({ code }) => {
34+
if (isProd) {
35+
var minified = (output.banner ? output.banner + '\n' : '') + uglify.minify(code, {
36+
output: {
37+
/* eslint-disable camelcase */
38+
ascii_only: true
39+
/* eslint-enable camelcase */
40+
}
41+
}).code
42+
return write(output.file, minified, true)
43+
} else {
44+
return write(output.file, code)
45+
}
46+
})
10747
}
10848

10949
function write (dest, code, zip) {

build/configs.js

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
const path = require('path')
2+
const buble = require('rollup-plugin-buble')
3+
const flow = require('rollup-plugin-flow-no-whitespace')
4+
const cjs = require('rollup-plugin-commonjs')
5+
const node = require('rollup-plugin-node-resolve')
6+
const replace = require('rollup-plugin-replace')
7+
const version = process.env.VERSION || require('../package.json').version
8+
const banner =
9+
`/**
10+
* vue-router v${version}
11+
* (c) ${new Date().getFullYear()} Evan You
12+
* @license MIT
13+
*/`
14+
15+
const resolve = _path => path.resolve(__dirname, '../', _path)
16+
17+
module.exports = [
18+
// browser dev
19+
{
20+
file: resolve('dist/vue-router.js'),
21+
format: 'umd',
22+
env: 'development'
23+
},
24+
{
25+
file: resolve('dist/vue-router.min.js'),
26+
format: 'umd',
27+
env: 'production'
28+
},
29+
{
30+
file: resolve('dist/vue-router.common.js'),
31+
format: 'cjs'
32+
},
33+
{
34+
file: resolve('dist/vue-router.esm.js'),
35+
format: 'es'
36+
}
37+
].map(genConfig)
38+
39+
function genConfig (opts) {
40+
const config = {
41+
input: {
42+
input: resolve('src/index.js'),
43+
plugins: [
44+
flow(),
45+
node(),
46+
cjs(),
47+
replace({
48+
__VERSION__: version
49+
}),
50+
buble()
51+
]
52+
},
53+
output: {
54+
file: opts.file,
55+
format: opts.format,
56+
banner,
57+
name: 'VueRouter'
58+
}
59+
}
60+
61+
if (opts.env) {
62+
config.input.plugins.unshift(replace({
63+
'process.env.NODE_ENV': JSON.stringify(opts.env)
64+
}))
65+
}
66+
67+
return config
68+
}

build/dev.config.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

build/rollup.dev.config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const { input, output } = require('./configs')[0]
2+
3+
module.exports = Object.assign({}, input, { output })

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
],
2424
"scripts": {
2525
"dev": "node examples/server.js",
26-
"dev:dist": "rollup -wm -c build/dev.config.js",
26+
"dev:dist": "rollup -wm -c build/rollup.dev.config.js",
2727
"build": "node build/build.js",
2828
"lint": "eslint src examples",
2929
"test": "npm run lint && flow check && npm run test:unit && npm run test:e2e && npm run test:types",

0 commit comments

Comments
 (0)