@ntbl/validator
Version:
100 lines (89 loc) • 2.44 kB
JavaScript
const path = require('path')
const buble = require('rollup-plugin-buble')
const alias = require('rollup-plugin-alias')
const cjs = require('rollup-plugin-commonjs')
const replace = require('rollup-plugin-replace')
const node = require('rollup-plugin-node-resolve')
const flow = require('rollup-plugin-flow-no-whitespace')
const version = require('../package.json').version
const moduleName = 'validator'
// 文件头声明
const banner =
'/*!\n' +
` * Vue.js v${version}\n` +
` * (c) 2014-${new Date().getFullYear()} Evan You\n` +
' * Released under the MIT License.\n' +
' */'
const aliases = require('./alias')
const resolve = p => {
const base = p.split('/')[0]
if (aliases[base]) {
return path.resolve(aliases[base], p.slice(base.length + 1))
} else {
return path.resolve(__dirname, '../', p)
}
}
// 配置信息
/*
entry S - 入口文件
dest S - 目标文件(文件名带 .min 将会进行压缩)
format S - 打包的格式类型(cjs, es, umd)
banner S - 文件头声明
moduleName S - 指定包名
alias O - 别名
plugins A - 插件
external A - 忽略的包
*/
const builds = {
'cjs': {
entry: resolve('src/index.js'),
dest: resolve(`dist/${moduleName}.cjs.js`),
format: 'cjs',
env: 'development',
banner,
external: ['validator'],
},
'es': {
entry: resolve('src/index.js'),
dest: resolve(`dist/${moduleName}.es.js`),
format: 'es',
env: 'development',
banner,
external: ['validator'],
},
}
function genConfig (name) {
const opts = builds[name]
const config = {
input: opts.entry,
external: opts.external,
plugins: [
flow(),
alias(Object.assign({}, aliases, opts.format))
].concat(opts.plugins || []),
output: {
file: opts.dest,
format: opts.format,
banner: opts.banner,
name: opts.moduleName || moduleName
},
onwarn: (msg, warn) => {
if (!/Circular/.test(msg)) {
warn(msg)
}
}
}
// 替换打包文件中的变量
const vars = {
__WEEX__: !!opts.weex,
__VERSION__: version
}
config.plugins.push(replace(vars))
return config
}
if (process.env.TARGET) {
module.exports = genConfig(process.env.TARGET)
} else {
exports.getBuild = genConfig
exports.getAllBuilds = () => Object.keys(builds).map(genConfig)
}