tiny-dream
Version:
A tiny Incremental DOM implementation for modern browsers.
94 lines (84 loc) • 2.23 kB
JavaScript
const path = require('path')
const babel = require('rollup-plugin-babel')
const cjs = require('rollup-plugin-commonjs')
const replace = require('rollup-plugin-replace')
const node = require('rollup-plugin-node-resolve')
const version = process.env.VERSION || require('../package.json').version
const resolve = p => {
const base = p.split('/')[0]
return path.resolve(__dirname, '../', p)
}
const builds = {
'tiny-dream-umd': {
entry: resolve('src/tiny-dream.js'),
dest: resolve('dist/tiny-dream.js'),
format: 'umd',
env: 'development'
},
'tiny-dream-umd-production': {
entry: resolve('src/tiny-dream.js'),
dest: resolve('dist/tiny-dream.min.js'),
format: 'umd',
env: 'production'
},
'tiny-dream-cjs': {
entry: resolve('src/tiny-dream.js'),
dest: resolve('dist/tiny-dream.common.js'),
format: 'cjs',
env: 'development'
},
'tiny-dream-cjs-production': {
entry: resolve('src/tiny-dream.js'),
dest: resolve('dist/tiny-dream.common.min.js'),
format: 'cjs',
env: 'production'
}
}
const banner =
'/*!\n' +
' * Tiny Dream v' + version + '\n' +
' * (c) 2018 Yoshihide Shiono\n' +
' * Released under the MIT License.\n' +
' */'
const onwarn = (warning) => {
if (warning.code === 'THIS_IS_UNDEFINED' || warning.code === 'CIRCULAR_DEPENDENCY') {
return
}
console.error(warning.message)
}
function genConfig (name) {
const opts = builds[name]
const config = {
input: opts.entry,
external: opts.external,
onwarn: onwarn,
plugins: [
babel({
exclude: 'node_modules/**',
plugins: ['external-helpers']
})
].concat(opts.plugins || []),
output: {
file: opts.dest,
format: opts.format,
banner: banner,
name: opts.moduleName || 'TinyDream'
}
}
if (opts.env) {
config.plugins.push(replace({
'process.env.NODE_ENV': JSON.stringify(opts.env)
}))
}
Object.defineProperty(config, '_name', {
enumerable: false,
value: name
})
return config
}
if (process.env.TARGET) {
module.exports = genConfig(process.env.TARGET)
} else {
exports.getBuild = genConfig
exports.getAllBuilds = () => Object.keys(builds).map(genConfig)
}