Skip to content

Commit

Permalink
build: add rollup build
Browse files Browse the repository at this point in the history
  • Loading branch information
posva committed Nov 8, 2017
1 parent a7afce3 commit 8efe3c1
Show file tree
Hide file tree
Showing 6 changed files with 290 additions and 0 deletions.
80 changes: 80 additions & 0 deletions build/build.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
const rollup = require('rollup').rollup
const buble = require('rollup-plugin-buble')
const uglify = require('uglify-js')
const packageData = require('../package.json')
const mkdirp = require('mkdirp')
const { version, author, name } = packageData
// remove the email at the end
const authorName = author.replace(/\s+<.*/, '')
const moduleName = 'Vuefire'

// Make sure dist dir exists
mkdirp('dist')

const {
logError,
write,
} = require('./utils')

const banner =
'/*!\n' +
` * ${name} v${version}\n` +
` * (c) ${new Date().getFullYear()} ${authorName}\n` +
' * Released under the MIT License.\n' +
' */'

const bundleOptions = {
banner,
exports: 'named',
format: 'umd',
name: moduleName,
}

function createBundle ({ name, format }) {
rollup({
input: 'src/index.js',
plugins: [
buble({
objectAssign: 'Object.assign',
}),
],
}).then(function (bundle) {
const options = Object.assign({}, bundleOptions)
if (format) options.format = format
return bundle.generate(options)
}).then(function ({ code }) {
if (/min$/.test(name)) {
const minified = uglify.minify(code, {
output: {
preamble: banner,
ascii_only: true,
},
}).code
return write(`dist/${name}.js`, minified)
} else {
return write(`dist/${name}.js`, code)
}
}).catch(logError)
}

// Browser bundle (can be used with script)
createBundle({
name,
})

// Commonjs bundle (preserves process.env.NODE_ENV) so
// the user can replace it in dev and prod mode
createBundle({
name: `${name}.esm`,
format: 'es',
})

createBundle({
name: `${name}.common`,
format: 'cjs',
})

// Minified version for browser
createBundle({
name: `${name}.min`,
})
7 changes: 7 additions & 0 deletions build/utils/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const write = require('./write.js')
const { logError } = require('./log.js')

module.exports = {
write,
logError,
}
27 changes: 27 additions & 0 deletions build/utils/log.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
function logError (e) {
console.log(e)
}

function blue (str) {
return `\x1b[1m\x1b[34m${str}\x1b[39m\x1b[22m`
}

function green (str) {
return `\x1b[1m\x1b[32m${str}\x1b[39m\x1b[22m`
}

function red (str) {
return `\x1b[1m\x1b[31m${str}\x1b[39m\x1b[22m`
}

function yellow (str) {
return `\x1b[1m\x1b[33m${str}\x1b[39m\x1b[22m`
}

module.exports = {
blue,
green,
red,
yellow,
logError,
}
19 changes: 19 additions & 0 deletions build/utils/write.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const fs = require('fs')

const { blue } = require('./log.js')

function write (dest, code) {
return new Promise(function (resolve, reject) {
fs.writeFile(dest, code, function (err) {
if (err) return reject(err)
console.log(blue(dest) + ' ' + getSize(code))
resolve()
})
})
}

function getSize (code) {
return (code.length / 1024).toFixed(2) + 'kb'
}

module.exports = write
153 changes: 153 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,11 @@
"cross-env": "^5.0.5",
"cz-conventional-changelog": "^2.0.0",
"firebase": "^4.5.0",
"mkdirp": "^0.5.1",
"nyc": "^11.2.1",
"rollup": "^0.50.0",
"rollup-plugin-buble": "^0.16.0",
"uglify-js": "^3.1.7",
"vue": "^2.4.4"
},
"config": {
Expand Down

0 comments on commit 8efe3c1

Please sign in to comment.