Skip to content

Commit

Permalink
build: update build script
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Oct 11, 2017
1 parent 836d9c1 commit 3cc08fb
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 96 deletions.
100 changes: 20 additions & 80 deletions build/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,46 +3,13 @@ const path = require('path')
const zlib = require('zlib')
const uglify = require('uglify-js')
const rollup = require('rollup')
const buble = require('rollup-plugin-buble')
const flow = require('rollup-plugin-flow-no-whitespace')
const cjs = require('rollup-plugin-commonjs')
const node = require('rollup-plugin-node-resolve')
const replace = require('rollup-plugin-replace')
const version = process.env.VERSION || require('../package.json').version
const banner =
`/**
* vue-router v${version}
* (c) ${new Date().getFullYear()} Evan You
* @license MIT
*/`
const configs = require('./configs')

if (!fs.existsSync('dist')) {
fs.mkdirSync('dist')
}

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

build([
// browser dev
{
dest: resolve('dist/vue-router.js'),
format: 'umd',
env: 'development'
},
{
dest: resolve('dist/vue-router.min.js'),
format: 'umd',
env: 'production'
},
{
dest: resolve('dist/vue-router.common.js'),
format: 'cjs'
},
{
dest: resolve('dist/vue-router.esm.js'),
format: 'es'
}
].map(genConfig))
build(Object.keys(configs).map(key => configs[key]))

function build (builds) {
let built = 0
Expand All @@ -59,51 +26,24 @@ function build (builds) {
next()
}

function genConfig (opts) {
const config = {
entry: resolve('src/index.js'),
dest: opts.dest,
format: opts.format,
banner,
moduleName: 'VueRouter',
plugins: [
flow(),
node(),
cjs(),
replace({
__VERSION__: version
}),
buble()
]
}

if (opts.env) {
config.plugins.unshift(replace({
'process.env.NODE_ENV': JSON.stringify(opts.env)
}))
}

return config
}

function buildEntry (config) {
const isProd = /min\.js$/.test(config.dest)
return rollup.rollup(config).then(bundle => {
const code = bundle.generate(config).code
if (isProd) {
var minified = (config.banner ? config.banner + '\n' : '') + uglify.minify(code, {
output: {
ascii_only: true
},
compress: {
pure_funcs: ['makeMap']
}
}).code
return write(config.dest, minified, true)
} else {
return write(config.dest, code)
}
})
function buildEntry ({ input, output }) {
const isProd = /min\.js$/.test(output.file)
return rollup.rollup(input)
.then(bundle => bundle.generate(output))
.then(({ code }) => {
if (isProd) {
var minified = (output.banner ? output.banner + '\n' : '') + uglify.minify(code, {
output: {
/* eslint-disable camelcase */
ascii_only: true
/* eslint-enable camelcase */
}
}).code
return write(output.file, minified, true)
} else {
return write(output.file, code)
}
})
}

function write (dest, code, zip) {
Expand Down
68 changes: 68 additions & 0 deletions build/configs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
const path = require('path')
const buble = require('rollup-plugin-buble')
const flow = require('rollup-plugin-flow-no-whitespace')
const cjs = require('rollup-plugin-commonjs')
const node = require('rollup-plugin-node-resolve')
const replace = require('rollup-plugin-replace')
const version = process.env.VERSION || require('../package.json').version
const banner =
`/**
* vue-router v${version}
* (c) ${new Date().getFullYear()} Evan You
* @license MIT
*/`

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

module.exports = [
// browser dev
{
file: resolve('dist/vue-router.js'),
format: 'umd',
env: 'development'
},
{
file: resolve('dist/vue-router.min.js'),
format: 'umd',
env: 'production'
},
{
file: resolve('dist/vue-router.common.js'),
format: 'cjs'
},
{
file: resolve('dist/vue-router.esm.js'),
format: 'es'
}
].map(genConfig)

function genConfig (opts) {
const config = {
input: {
input: resolve('src/index.js'),
plugins: [
flow(),
node(),
cjs(),
replace({
__VERSION__: version
}),
buble()
]
},
output: {
file: opts.file,
format: opts.format,
banner,
name: 'VueRouter'
}
}

if (opts.env) {
config.input.plugins.unshift(replace({
'process.env.NODE_ENV': JSON.stringify(opts.env)
}))
}

return config
}
15 changes: 0 additions & 15 deletions build/dev.config.js

This file was deleted.

3 changes: 3 additions & 0 deletions build/rollup.dev.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const { input, output } = require('./configs')[0]

module.exports = Object.assign({}, input, { output })
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
],
"scripts": {
"dev": "node examples/server.js",
"dev:dist": "rollup -wm -c build/dev.config.js",
"dev:dist": "rollup -wm -c build/rollup.dev.config.js",
"build": "node build/build.js",
"lint": "eslint src examples",
"test": "npm run lint && flow check && npm run test:unit && npm run test:e2e && npm run test:types",
Expand Down

0 comments on commit 3cc08fb

Please sign in to comment.