legoflow-engine
Version:
56 lines (43 loc) • 1.38 kB
JavaScript
/**
* 构建工作流
*/
const WebpackConfig = require('./webpack-config')
const { extendConfig, setMode, logVersion, loadPlugins } = require('./common/util.js')
const logProgress = require('./common/log-progress')
module.exports = async options => {
options.base64ImageMaxSize && (process.env.base64ImageMaxSize = options.base64ImageMaxSize)
options.disableFileNameHash && (process.env.disableFileNameHash = options.disableFileNameHash)
const mode = 'production'
// 设置 webpack mode
setMode(mode)
// 打印 cli 版本号
logVersion()
// 扩展配置
const extendConfigFunc = extendConfig()
// 构建基础 webpack config
let webpackConfig = WebpackConfig()
// 加载插件
await loadPlugins({ webpackConfig })
// 执行扩展配置函数
if (extendConfigFunc) {
const __extendConfig__ = await extendConfigFunc({
mode,
webpackConfig
})
__extendConfig__ && __extendConfig__.webpackConfig && (webpackConfig = __extendConfig__.webpackConfig)
}
// 进度输出控制台
logProgress.show(mode)
// 启动 webpack
webpackConfig = webpackConfig.toConfig ? webpackConfig.toConfig() : webpackConfig
require('webpack')(webpackConfig, (err, stats) => {
if (err) {
console.error(err)
process.exit(1)
}
console.log(stats.toString({
chunks: false,
colors: true
}))
})
}