custom-app
Version:
ITIMS��Ʒ�鿪��ר��React���,�Dz��ý��ּ�dhcc-app���������
62 lines (55 loc) • 2.83 kB
JavaScript
let path = require("path");
let webpack = require("webpack");
let merge = require("webpack-merge");
let base = require('./webpack.base.conf');
const packageJson = require("../package.json")
const TerserJSPlugin = require('terser-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
//打包前清理输出目录
let CleanWebpackPlugin = require("clean-webpack-plugin");
let moduleName = packageJson.name
let reactAppPath = require('./rootpath').path
reactAppPath = reactAppPath.split(",").join(path.sep)
let projectName = require('./project').name
//let deployPath = process.env.WEBPACK_MODE == 'production' ? (process.env.CATALINA_BASE + '/reactapps/itims4') : reactAppPath;
let deployPath = path.join(path.dirname(reactAppPath), "webapp", "reactapp", moduleName);
let outputPath = path.resolve(deployPath, projectName);
console.log("prod.deployPath:" + deployPath)
console.log("prod.outputPath:" + outputPath)
let useHash = process.argv.indexOf("-h") != -1 ? true : false
let isPlugin = false
try {
const tpackageJSON = require(path.join(reactAppPath, "src", projectName, "package.json"))
if (tpackageJSON && tpackageJSON.moduleType == 'plugin') {
isPlugin = true
}
} catch (error) {
}
let webpackConfig = merge(base, {
mode: 'production',
output: {
filename: isPlugin ? 'production.min.js' : "index.js",
path: isPlugin ? path.join(reactAppPath, 'src', projectName, 'dist') : outputPath,
/*
* chunkFilename用来打包require.ensure方法中引入的模块,如果该方法中没有引入任何模块则不会生成任何chunk块文件
* 比如在main.js文件中,require.ensure([],function(require){alert(11);}),这样不会打包块文件
* 只有这样才会打包生成块文件require.ensure([],function(require){alert(11);require('./greeter')})
* 或者这样require.ensure(['./greeter'],function(require){alert(11);})
* chunk的hash值只有在require.ensure中引入的模块发生变化,hash值才会改变
* 注意:对于不是在ensure方法中引入的模块,此属性不会生效,只能用CommonsChunkPlugin插件来提取
* */
//chunkFilename: 'chunk/' + (useHash ? '[chunkhash:8].' : '') + projectName + '.js'
},
optimization: {
minimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})],
},
plugins: [
new CleanWebpackPlugin([outputPath], { dry: false, verbose: true, root: deployPath })
]
})
webpackConfig.entry = { app: [isPlugin ? path.join(reactAppPath, 'src', projectName, 'src', 'plugin', 'App.js') : path.join(reactAppPath, 'src', projectName, 'index.js')] }
if (isPlugin) {
webpackConfig.output.libraryTarget = 'umd'
}
module.exports = webpackConfig;