custom-app
Version:
ITIMS��Ʒ�鿪��ר��React���,�Dz��ý��ּ�dhcc-app���������
57 lines (50 loc) • 2.7 kB
JavaScript
let path = require("path");
let webpack = require("webpack");
let merge = require("webpack-merge");
let base = require('./webpack.base.conf');
//打包前清理输出目录
let CleanWebpackPlugin = require("clean-webpack-plugin");
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 = reactAppPath;
let outputPath = path.resolve(deployPath, path.join('build', projectName));
console.log("deployPath:" + deployPath)
console.log("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, {
entry: { app: [isPlugin ? path.join(reactAppPath, 'src', projectName, 'src', 'plugin', 'App.js') : path.join(reactAppPath, 'src', projectName, 'index.js')] },
output: {
filename: isPlugin ? 'development.js' : "index.js",
path: isPlugin ? path.join(reactAppPath, 'src', projectName, 'build') : 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'
},
mode: 'development',
devtool: "inline-source-map",
plugins: [
new webpack.HotModuleReplacementPlugin(),
new CleanWebpackPlugin([isPlugin ? path.join(reactAppPath, 'src', projectName, 'build') : outputPath], { dry: false, verbose: true, root: reactAppPath })
]
})
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;