Skip to content

Commit 961d109

Browse files
committed
build adjustments
1 parent 98876f0 commit 961d109

9 files changed

+157
-213
lines changed

build/alias.js

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

build/build.js

Lines changed: 25 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,131 +1,53 @@
1-
var fs = require('fs')
2-
var zlib = require('zlib')
3-
var rollup = require('rollup')
4-
var uglify = require('uglify-js')
5-
var babel = require('rollup-plugin-babel')
6-
var replace = require('rollup-plugin-replace')
7-
var aliasPlugin = require('rollup-plugin-alias')
8-
var baseAlias = require('./alias')
9-
var version = process.env.VERSION || require('../package.json').version
1+
const fs = require('fs')
2+
const path = require('path')
3+
const zlib = require('zlib')
4+
const rollup = require('rollup')
5+
const uglify = require('uglify-js')
106

117
if (!fs.existsSync('dist')) {
128
fs.mkdirSync('dist')
139
}
1410

15-
var banner =
16-
'/*!\n' +
17-
' * Vue.js v' + version + '\n' +
18-
' * (c) 2014-' + new Date().getFullYear() + ' Evan You\n' +
19-
' * Released under the MIT License.\n' +
20-
' */'
21-
2211
// Update main file
23-
var main = fs
12+
const version = process.env.VERSION || require('../package.json').version
13+
const main = fs
2414
.readFileSync('src/core/index.js', 'utf-8')
2515
.replace(/Vue\.version = '[^']+'/, "Vue.version = '" + version + "'")
2616
fs.writeFileSync('src/core/index.js', main)
2717

28-
var builds = [
29-
// Runtime only (CommonJS). Used by bundlers e.g. Webpack & Browserify
30-
{
31-
entry: 'src/entries/web-runtime.js',
32-
format: 'cjs',
33-
out: 'dist/vue.common.js'
34-
},
35-
// Minified runtime, only for filze size monitoring
36-
{
37-
entry: 'src/entries/web-runtime.js',
38-
format: 'umd',
39-
env: 'production',
40-
out: 'dist/vue.common.min.js'
41-
},
42-
// Runtime+compiler standalone developement build.
43-
{
44-
entry: 'src/entries/web-runtime-with-compiler.js',
45-
format: 'umd',
46-
env: 'development',
47-
out: 'dist/vue.js',
48-
banner: true,
49-
alias: {
50-
entities: './entity-decoder'
51-
}
52-
},
53-
// Runtime+compiler standalone production build.
54-
{
55-
entry: 'src/entries/web-runtime-with-compiler.js',
56-
format: 'umd',
57-
env: 'production',
58-
out: 'dist/vue.min.js',
59-
banner: true,
60-
alias: {
61-
entities: './entity-decoder'
62-
}
63-
},
64-
// Web compiler (CommonJS).
65-
{
66-
entry: 'src/entries/web-compiler.js',
67-
format: 'cjs',
68-
external: ['entities', 'de-indent'],
69-
out: 'packages/vue-template-compiler/build.js'
70-
},
71-
// Web server renderer (CommonJS).
72-
{
73-
entry: 'src/entries/web-server-renderer.js',
74-
format: 'cjs',
75-
external: ['stream', 'module', 'vm', 'entities', 'de-indent'],
76-
out: 'packages/vue-server-renderer/build.js'
77-
}
78-
]
18+
let builds = require('./config').getAllBuilds()
7919

8020
// filter builds via command line arg
8121
if (process.argv[2]) {
82-
var filters = process.argv[2].split(',')
22+
const filters = process.argv[2].split(',')
8323
builds = builds.filter(b => {
84-
return filters.some(f => b.out.indexOf(f) > -1)
24+
return filters.some(f => b.dest.indexOf(f) > -1)
8525
})
8626
}
8727

8828
build(builds)
8929

9030
function build (builds) {
91-
var built = 0
92-
var total = builds.length
93-
next()
94-
function next () {
95-
buildEntry(builds[built]).then(function () {
31+
let built = 0
32+
const total = builds.length
33+
const next = () => {
34+
buildEntry(builds[built]).then(() => {
9635
built++
9736
if (built < total) {
9837
next()
9938
}
10039
}).catch(logError)
10140
}
41+
42+
next()
10243
}
10344

104-
function buildEntry (opts) {
105-
var plugins = [babel()]
106-
if (opts.env) {
107-
plugins.push(replace({
108-
'process.env.NODE_ENV': JSON.stringify(opts.env),
109-
'process.env.VUE_ENV': JSON.stringify('client')
110-
}))
111-
}
112-
var alias = baseAlias
113-
if (opts.alias) {
114-
alias = Object.assign({}, baseAlias, opts.alias)
115-
}
116-
plugins.push(aliasPlugin(alias))
117-
return rollup.rollup({
118-
entry: opts.entry,
119-
plugins: plugins,
120-
external: opts.external
121-
}).then(function (bundle) {
122-
var code = bundle.generate({
123-
format: opts.format,
124-
moduleName: 'Vue',
125-
banner: opts.banner ? banner : null
126-
}).code
127-
if (opts.env === 'production') {
128-
var minified = (opts.banner ? banner + '\n' : '') + uglify.minify(code, {
45+
function buildEntry (config) {
46+
const isProd = /min\.js$/.test(config.dest)
47+
return rollup.rollup(config).then(bundle => {
48+
const code = bundle.generate(config).code
49+
if (isProd) {
50+
var minified = (config.banner ? config.banner + '\n' : '') + uglify.minify(code, {
12951
fromString: true,
13052
output: {
13153
screw_ie8: true,
@@ -135,9 +57,9 @@ function buildEntry (opts) {
13557
pure_funcs: ['makeMap']
13658
}
13759
}).code
138-
return write(opts.out, minified).then(zip(opts.out))
60+
return write(config.dest, minified).then(zip(config.dest))
13961
} else {
140-
return write(opts.out, code)
62+
return write(config.dest, code)
14163
}
14264
})
14365
}
@@ -146,7 +68,7 @@ function write (dest, code) {
14668
return new Promise(function (resolve, reject) {
14769
fs.writeFile(dest, code, function (err) {
14870
if (err) return reject(err)
149-
console.log(blue(dest) + ' ' + getSize(code))
71+
console.log(blue(path.relative(process.cwd(), dest)) + ' ' + getSize(code))
15072
resolve()
15173
})
15274
})

build/config.js

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
const path = require('path')
2+
const flow = require('./rollup-plugin-flow')
3+
const buble = require('rollup-plugin-buble')
4+
const replace = require('rollup-plugin-replace')
5+
const alias = require('rollup-plugin-alias')
6+
const version = process.env.VERSION || require('../package.json').version
7+
8+
const banner =
9+
'/*!\n' +
10+
' * Vue.js v' + version + '\n' +
11+
' * (c) 2014-' + new Date().getFullYear() + ' Evan You\n' +
12+
' * Released under the MIT License.\n' +
13+
' */'
14+
15+
const baseAlias = {
16+
vue: path.resolve(__dirname, '../src/entries/web-runtime-with-compiler'),
17+
compiler: path.resolve(__dirname, '../src/compiler'),
18+
core: path.resolve(__dirname, '../src/core'),
19+
shared: path.resolve(__dirname, '../src/shared'),
20+
web: path.resolve(__dirname, '../src/platforms/web'),
21+
server: path.resolve(__dirname, '../src/server'),
22+
entries: path.resolve(__dirname, '../src/entries'),
23+
sfc: path.resolve(__dirname, '../src/sfc')
24+
}
25+
26+
const builds = {
27+
// Runtime only (CommonJS). Used by bundlers e.g. Webpack & Browserify
28+
'web-runtime-dev': {
29+
entry: path.resolve(__dirname, '../src/entries/web-runtime.js'),
30+
dest: path.resolve(__dirname, '../dist/vue.common.js'),
31+
format: 'cjs'
32+
},
33+
// Minified runtime, only for filze size monitoring
34+
'web-runtime-prod': {
35+
entry: path.resolve(__dirname, '../src/entries/web-runtime.js'),
36+
dest: path.resolve(__dirname, '../dist/vue.common.min.js'),
37+
format: 'umd',
38+
env: 'production'
39+
},
40+
// Runtime+compiler standalone developement build.
41+
'web-standalone-dev': {
42+
entry: path.resolve(__dirname, '../src/entries/web-runtime-with-compiler.js'),
43+
dest: path.resolve(__dirname, '../dist/vue.js'),
44+
format: 'umd',
45+
env: 'development',
46+
banner,
47+
alias: {
48+
entities: './entity-decoder'
49+
}
50+
},
51+
// Runtime+compiler standalone production build.
52+
'web-standalone-prod': {
53+
entry: path.resolve(__dirname, '../src/entries/web-runtime-with-compiler.js'),
54+
dest: path.resolve(__dirname, '../dist/vue.min.js'),
55+
format: 'umd',
56+
env: 'production',
57+
banner,
58+
alias: {
59+
entities: './entity-decoder'
60+
}
61+
},
62+
// Web compiler (CommonJS).
63+
'web-compiler': {
64+
entry: path.resolve(__dirname, '../src/entries/web-compiler.js'),
65+
dest: path.resolve(__dirname, '../packages/vue-template-compiler/build.js'),
66+
format: 'cjs',
67+
external: ['entities', 'de-indent']
68+
},
69+
// Web server renderer (CommonJS).
70+
'web-server-renderer': {
71+
entry: path.resolve(__dirname, '../src/entries/web-server-renderer.js'),
72+
dest: path.resolve(__dirname, '../packages/vue-server-renderer/build.js'),
73+
format: 'cjs',
74+
external: ['stream', 'module', 'vm', 'entities', 'de-indent']
75+
}
76+
}
77+
78+
function genConfig (opts) {
79+
const config = {
80+
entry: opts.entry,
81+
dest: opts.dest,
82+
external: opts.external,
83+
format: opts.format,
84+
banner: opts.banner,
85+
moduleName: 'Vue',
86+
plugins: [
87+
flow(),
88+
buble(),
89+
alias(Object.assign({}, baseAlias, opts.alias))
90+
]
91+
}
92+
93+
if (opts.env) {
94+
config.plugins.push(replace({
95+
'process.env.NODE_ENV': JSON.stringify(opts.env),
96+
'process.env.VUE_ENV': JSON.stringify('client')
97+
}))
98+
}
99+
100+
return config
101+
}
102+
103+
if (process.env.TARGET) {
104+
module.exports = genConfig(builds[process.env.TARGET])
105+
} else {
106+
exports.getBuild = name => genConfig(builds[name])
107+
exports.getAllBuilds = () => Object.keys(builds).map(name => genConfig(builds[name]))
108+
}

build/rollup-plugin-flow.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
var flowRemoveTypes = require('flow-remove-types')
2+
var createFilter = require('rollup-pluginutils').createFilter
3+
4+
module.exports = function(options) {
5+
options = options || {};
6+
var filter = createFilter(options.include, options.exclude)
7+
8+
return {
9+
name: 'flow-remove-types',
10+
transform: function(code, id) {
11+
if (filter(id)) {
12+
return flowRemoveTypes(code)
13+
}
14+
}
15+
}
16+
}

build/webpack.compiler.dev.config.js

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

build/webpack.dist.dev.config.js

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

build/webpack.dist.dev.entry.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)