You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
45 lines
1.1 KiB
/**
|
|
* @description 创建 rollup 配置
|
|
* @author wangfupeng
|
|
*/
|
|
|
|
import { merge } from 'lodash'
|
|
import { visualizer } from 'rollup-plugin-visualizer'
|
|
import genDevConf from './config/dev'
|
|
import genPrdConf from './config/prd'
|
|
|
|
// 环境变量
|
|
const ENV = process.env.NODE_ENV || 'production'
|
|
const IS_SIZE_STATS = ENV.indexOf('size_stats') >= 0 // 分析包体积
|
|
export const IS_DEV = ENV.indexOf('development') >= 0
|
|
export const IS_PRD = ENV.indexOf('production') >= 0
|
|
|
|
/**
|
|
* 生成单个 rollup 配置
|
|
* @param {object} customConfig { input, output, plugins ... }
|
|
*/
|
|
export function createRollupConfig(customConfig = {}) {
|
|
const { input, output = {}, plugins = [] } = customConfig
|
|
const { format } = output
|
|
|
|
let baseConfig
|
|
if (IS_PRD) {
|
|
baseConfig = genPrdConf(format)
|
|
} else {
|
|
baseConfig = genDevConf(format)
|
|
}
|
|
|
|
if (IS_SIZE_STATS) {
|
|
// 分析包体积。运行之后可查看 package 下的 `stats.html`
|
|
plugins.push(visualizer())
|
|
}
|
|
|
|
const config = {
|
|
input: input ? input : baseConfig.input,
|
|
output,
|
|
plugins,
|
|
}
|
|
|
|
const res = merge({}, baseConfig, config)
|
|
return res
|
|
}
|