UNPKG

custom-app

Version:

ITIMS��Ʒ�鿪��ר��React���,�Dz��ý��ּ�dhcc-app���������

57 lines (50 loc) 2.7 kB
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;