Skip to content

Commit 8efe3c1

Browse files
committed
build: add rollup build
1 parent a7afce3 commit 8efe3c1

File tree

6 files changed

+290
-0
lines changed

6 files changed

+290
-0
lines changed

build/build.js

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
const rollup = require('rollup').rollup
2+
const buble = require('rollup-plugin-buble')
3+
const uglify = require('uglify-js')
4+
const packageData = require('../package.json')
5+
const mkdirp = require('mkdirp')
6+
const { version, author, name } = packageData
7+
// remove the email at the end
8+
const authorName = author.replace(/\s+<.*/, '')
9+
const moduleName = 'Vuefire'
10+
11+
// Make sure dist dir exists
12+
mkdirp('dist')
13+
14+
const {
15+
logError,
16+
write,
17+
} = require('./utils')
18+
19+
const banner =
20+
'/*!\n' +
21+
` * ${name} v${version}\n` +
22+
` * (c) ${new Date().getFullYear()} ${authorName}\n` +
23+
' * Released under the MIT License.\n' +
24+
' */'
25+
26+
const bundleOptions = {
27+
banner,
28+
exports: 'named',
29+
format: 'umd',
30+
name: moduleName,
31+
}
32+
33+
function createBundle ({ name, format }) {
34+
rollup({
35+
input: 'src/index.js',
36+
plugins: [
37+
buble({
38+
objectAssign: 'Object.assign',
39+
}),
40+
],
41+
}).then(function (bundle) {
42+
const options = Object.assign({}, bundleOptions)
43+
if (format) options.format = format
44+
return bundle.generate(options)
45+
}).then(function ({ code }) {
46+
if (/min$/.test(name)) {
47+
const minified = uglify.minify(code, {
48+
output: {
49+
preamble: banner,
50+
ascii_only: true,
51+
},
52+
}).code
53+
return write(`dist/${name}.js`, minified)
54+
} else {
55+
return write(`dist/${name}.js`, code)
56+
}
57+
}).catch(logError)
58+
}
59+
60+
// Browser bundle (can be used with script)
61+
createBundle({
62+
name,
63+
})
64+
65+
// Commonjs bundle (preserves process.env.NODE_ENV) so
66+
// the user can replace it in dev and prod mode
67+
createBundle({
68+
name: `${name}.esm`,
69+
format: 'es',
70+
})
71+
72+
createBundle({
73+
name: `${name}.common`,
74+
format: 'cjs',
75+
})
76+
77+
// Minified version for browser
78+
createBundle({
79+
name: `${name}.min`,
80+
})

build/utils/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const write = require('./write.js')
2+
const { logError } = require('./log.js')
3+
4+
module.exports = {
5+
write,
6+
logError,
7+
}

build/utils/log.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
function logError (e) {
2+
console.log(e)
3+
}
4+
5+
function blue (str) {
6+
return `\x1b[1m\x1b[34m${str}\x1b[39m\x1b[22m`
7+
}
8+
9+
function green (str) {
10+
return `\x1b[1m\x1b[32m${str}\x1b[39m\x1b[22m`
11+
}
12+
13+
function red (str) {
14+
return `\x1b[1m\x1b[31m${str}\x1b[39m\x1b[22m`
15+
}
16+
17+
function yellow (str) {
18+
return `\x1b[1m\x1b[33m${str}\x1b[39m\x1b[22m`
19+
}
20+
21+
module.exports = {
22+
blue,
23+
green,
24+
red,
25+
yellow,
26+
logError,
27+
}

build/utils/write.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const fs = require('fs')
2+
3+
const { blue } = require('./log.js')
4+
5+
function write (dest, code) {
6+
return new Promise(function (resolve, reject) {
7+
fs.writeFile(dest, code, function (err) {
8+
if (err) return reject(err)
9+
console.log(blue(dest) + ' ' + getSize(code))
10+
resolve()
11+
})
12+
})
13+
}
14+
15+
function getSize (code) {
16+
return (code.length / 1024).toFixed(2) + 'kb'
17+
}
18+
19+
module.exports = write

package-lock.json

Lines changed: 153 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@
4646
"cross-env": "^5.0.5",
4747
"cz-conventional-changelog": "^2.0.0",
4848
"firebase": "^4.5.0",
49+
"mkdirp": "^0.5.1",
4950
"nyc": "^11.2.1",
51+
"rollup": "^0.50.0",
52+
"rollup-plugin-buble": "^0.16.0",
53+
"uglify-js": "^3.1.7",
5054
"vue": "^2.4.4"
5155
},
5256
"config": {

0 commit comments

Comments
 (0)