ya-driver
Version:
The driver support Ya GUI or Ya cli. docker image
90 lines (86 loc) • 2.69 kB
JavaScript
/**
* Mode === production webpack configs
*/
const getBaseConfig = require('./base');
// const merge = require('webpack-merge');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const {
modeMap
} = require('../vars');
const Project = require('../../lib/project');
module.exports = function (options) {
const project = new Project(options.projectPath); // 放置project相关信息
const {
application
} = project;
// let {
// appName
// } = project;
if (options.appEnv === 'local') { // 本地Test
if (!options.appDomain) {
if (options.sdk) { // SDK模式下输出本地相对地址
options.appDomain = './';
} else {
options.appDomain = '/';
}
}
if (!options.cdnDomain) {
if (options.sdk) { // SDK模式下输出本地相对地址
options.cdnDomain = './'; // 本地测试占位
} else {
options.cdnDomain = '/'; // 本地测试占位
}
}
}
// appName = options.appName || appName; // 应该和project pkg.name一致
const baseConfig = getBaseConfig({
...options,
cdnDomain: options.cdnDomain || `//cdn-${options.appDomain}`, // cdn 地址
// appDomain: options.appDomain,
// appName,
// appEnv: options.appEnv, // 环境名
mode: modeMap.PROD
});
const {
singleStyleFile,
optimizeStyle,
localNoCompress
} = application.build;
let cacheGroups = {}; // splitChunks configs
if (singleStyleFile) { // Merge to one style file
cacheGroups.styles = {
name: 'styles',
// test: /\.(css|less|styl|stylus|sass|scss|vue)$/,
test: m => m.constructor.name === 'CssModule', // 会产生额外的styles.js https://github.com/webpack-contrib/mini-css-extract-plugin/issues/113
chunks: 'all',
minChunks: 1,
enforce: true
};
}
let configs = {
...baseConfig,
optimization: {
minimizer: [
new UglifyJsPlugin({
cache: true,
parallel: true,
sourceMap: true // set to true if you want JS source maps
})
// new OptimizeCSSAssetsPlugin({})
].concat(optimizeStyle ? [new OptimizeCSSAssetsPlugin({})] : []),
// runtimeChunk: 'single', // Reduce request number
splitChunks: {
chunks: 'all',
maxAsyncRequests: Infinity,
cacheGroups
}
}
};
if (options.appEnv === 'local') { // 本地Test
if (localNoCompress) { // 本地build不压缩
delete configs.optimization;
}
}
return configs;
};