const webpack = require('webpack'); const path = require('path'); const os = require('os'); // HappyPack是让webpack对loader的执行过程,从单一进程形式扩展为多进程模式,也就是将任务分解给多个子进程去并发的执行,子进程处理完后再把结果发送给主进程。从而加速代码构建 与 DLL动态链接库结合来使用更佳。 const HappyPack = require('happypack'); const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length }); const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); export default{ // es5ImcompatibleVersions: true, entry: "src/index.js", extraBabelPlugins: [ //"transform-decorators-legacy", [ "import", { "libraryName": "antd", "libraryDirectory": "es", "style": true } ] ], alias: { '@constants': path.join(__dirname, './src/constants'), '@common': path.join(__dirname, './src/common'), '@utils': path.join(__dirname, './src/utils'), '@services': path.join(__dirname, './src/services'), '@assets': path.join(__dirname, './src/assets'), '@mapModule': path.join(__dirname, './src/routes/Command/mapModule'), '@gis': path.join(__dirname, './src/routes/Command/GIS'), '@': path.join(__dirname, './src'), }, env: { development: { "extraBabelPlugins": ["dva-hmr"], "publicPath": "/", disableDynamicImport: true, module: { rules: [ { test: /\.js$/, // 将.js 文件交给id为 js 的happypack实例来执行 use: 'happypack/loader?id=js' }, { test: /\.(css|less)$/, // 将.less 文件交给id为 styles 的happypack实例来执行 use: 'happypack/loader?id=styles' } ] }, plugins: [ new HappyPack({ id: 'js', threadPool: happyThreadPool, loaders: [ 'babel-loader' ] }), new HappyPack({ id: 'styles', threadPool: happyThreadPool, loaders: [ 'style-loader', 'css-loader', 'less-loader' ] }) ] }, production: { "publicPath": "/", disableDynamicImport: false, plugins: [ // 允许错误不打断程序 new webpack.NoEmitOnErrorsPlugin(), // 作用域提升 new webpack.optimize.ModuleConcatenationPlugin(), ], optimization: { minimizer: [ // webpack.optimize.UglifyJsPlugin has been removed, please use config.optimization.minimize instead. // new webpack.optimize.UglifyJsPlugin({ new UglifyJsPlugin({ cache: true, parallel: true, sourceMap: false, uglifyOptions: { //删除注释 output:{ comments:true }, //删除console 和 debugger 删除警告 compress:{ warnings:false, drop_debugger:true, drop_console:true } } }) // new BabiliPlugin() // new TerserPlugin() ] } } }, proxy: { // "/": { // "target": "http://192.168.30.182:7080", // "changeOrigin": true, // }, // "/v5_api": { // "target": "http://192.168.30.182:7080", // "changeOrigin": true, // pathRewrite:{ // '^/v5_api':'' // } // }, // "/v5_base": { // "target": "http://117.78.35.63:8080", // "changeOrigin": true, // pathRewrite:{ // '^/v5_base':'' // } // }, // "/v5_base_https": { // "target": "https://117.78.35.63", // "changeOrigin": true, // pathRewrite:{ // '^/v5_base_https':'' // } // } }, externals: { "g2": "G2", "g-cloud": "Cloud", "g2-plugin-slider": "G2.Plugin.slider" }, ignoreMomentLocale: true, theme: "./src/theme.js", html: { "template": "./src/index.ejs" }, // disableDynamicImport: true, hash: true }