const projectName = require('./project'); const path = require('path'); const CompressionWebpackPlugin = require("compression-webpack-plugin") const productionGzipExtensions = ['js', 'css'] function resolve(dir) { return path.join(__dirname, dir) } let title = ''; if (process.env.VUE_APP_NODE_NAME == 'production') { title = '' } else if (process.env.VUE_APP_NODE_NAME == 'test') { title = '(测试)' } else { title = '(开发)' } const Timestamp = new Date().getTime(); const config = { //商业园区 business: { pages: { index: { entry: 'src/projects/business/main.js', template: 'index/business/index.html', filename: 'index.html', title: '小鹏管家' + title, } }, outputDir: 'dist/business', devServer: { host: '0.0.0.0', port: 80, //解析缓存 disableHostCheck: true, //支持gzip compress: true, }, chainWebpack: (config) => { config.entry.app = ['babel-polyfill', '../src/projects/business/main.js'] config.resolve.alias .set('@', resolve('../src/projects/business/')) .set('$project', resolve('../src/')) .set('$root', resolve('../')) config.plugins.delete('preload-index'); config.plugins.delete('prefetch-index'); config.optimization.minimize(true); //打包分析添加 //config.output.filename('js/[name].[hash].js').end(); //config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin) }, configureWebpack: config => { //开启gzip压缩,需要配置Nginx服务器gzip选项开启 config.plugins.push( new CompressionWebpackPlugin({ algorithm: 'gzip', //开启gzip test: /\.js$|\.html$|.\css/, // 匹配文件名 threshold: 10240, // 对超过10k的数据压缩 deleteOriginalAssets: false // 不删除源文件 }) ); config.output.filename = `./static/js/[name].${Timestamp}.js` config.output.chunkFilename = `./static/js/[name].${Timestamp}.js` config.performance = { hints: 'warning', //入口起点的最大体积 整数类型(以字节为单位) maxEntrypointSize: 50000000, //生成文件的最大体积 整数类型(以字节为单位 300k) maxAssetSize: 30000000, //只给出 js 文件的性能提示 assetFilter: function(assetFilename) { return assetFilename.endsWith('.js'); } } }, }, //住宅小区 residence: { pages: { index: { entry: 'src/projects/residence/main.js', template: 'index/residence/index.html', filename: 'index.html', title: '小鹏管家' + title, } }, outputDir: 'dist/residence', devServer: { host: '0.0.0.0', port: 8080, //解析缓存 disableHostCheck: true, //支持gzip compress: true, }, chainWebpack: (config) => { config.entry.app = ['babel-polyfill', '../src/projects/residence/main.js'] config.resolve.alias .set('@', resolve('../src/projects/residence/')) .set('$project', resolve('../src/')) .set('$root', resolve('../')) config.plugins.delete('preload-index'); config.plugins.delete('prefetch-index'); config.optimization.minimize(true); //打包分析添加 //config.output.filename('js/[name].[hash].js').end(); //config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin) }, configureWebpack: (config) => { //开启gzip压缩,需要配置Nginx服务器gzip选项开启 config.plugins.push( new CompressionWebpackPlugin({ algorithm: 'gzip', //开启gzip test: /\.js$|\.html$|.\css/, // 匹配文件名 threshold: 10240, // 对超过10k的数据压缩 deleteOriginalAssets: false // 不删除源文件 }) ); config.output.filename = `./static/js/[name].${Timestamp}.js` config.output.chunkFilename = `./static/js/[name].${Timestamp}.js` config.performance = { hints: 'warning', //入口起点的最大体积 整数类型(以字节为单位) maxEntrypointSize: 50000000, //生成文件的最大体积 整数类型(以字节为单位 300k) maxAssetSize: 30000000, //只给出 js 文件的性能提示 assetFilter: function(assetFilename) { return assetFilename.endsWith('.js'); } } }, }, //机构/居家养老 pension: { pages: { index: { entry: 'src/projects/pension/main.js', template: 'index/pension/index.html', filename: 'index.html', title: '小鹏管家' + title, } }, outputDir: 'dist/pension', devServer: { host: '0.0.0.0', port: 8080, //解析缓存 disableHostCheck: true, //支持gzip compress: true, }, chainWebpack: (config) => { config.entry.app = ['babel-polyfill', '../src/projects/pension/main.js'] config.resolve.alias .set('@', resolve('../src/projects/pension/')) .set('$project', resolve('../src/')) .set('$root', resolve('../')) config.plugins.delete('preload-index'); config.plugins.delete('prefetch-index'); config.optimization.minimize(true); //打包分析添加 //config.output.filename('js/[name].[hash].js').end(); //config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin) }, configureWebpack: (config) => { //开启gzip压缩,需要配置Nginx服务器gzip选项开启 config.plugins.push( new CompressionWebpackPlugin({ algorithm: 'gzip', //开启gzip test: /\.js$|\.html$|.\css/, // 匹配文件名 threshold: 10240, // 对超过10k的数据压缩 deleteOriginalAssets: false // 不删除源文件 }) ); config.output.filename = `./static/js/[name].${Timestamp}.js` config.output.chunkFilename = `./static/js/[name].${Timestamp}.js` config.performance = { hints: 'warning', //入口起点的最大体积 整数类型(以字节为单位) maxEntrypointSize: 50000000, //生成文件的最大体积 整数类型(以字节为单位 300k) maxAssetSize: 30000000, //只给出 js 文件的性能提示 assetFilter: function(assetFilename) { return assetFilename.endsWith('.js'); } } }, }, //入口 home: { pages: { index: { entry: 'src/projects/home/main.js', template: 'index/home/index.html', filename: 'index.html', title: '小鹏管家' + title, } }, outputDir: 'dist/home', devServer: { host: '0.0.0.0', port: 8080, //解析缓存 disableHostCheck: true, //支持gzip compress: true, }, chainWebpack: (config) => { config.entry.app = ['babel-polyfill', '../src/projects/home/main.js'] config.resolve.alias .set('@', resolve('../src/projects/home/')) .set('$project', resolve('../src/')) .set('$root', resolve('../')) config.plugins.delete('preload-index'); config.plugins.delete('prefetch-index'); config.optimization.minimize(true); //打包分析添加 //config.output.filename('js/[name].[hash].js').end(); //config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin) }, configureWebpack: (config) => { //开启gzip压缩,需要配置Nginx服务器gzip选项开启 config.plugins.push( new CompressionWebpackPlugin({ algorithm: 'gzip', //开启gzip test: /\.js$|\.html$|.\css/, // 匹配文件名 threshold: 10240, // 对超过10k的数据压缩 deleteOriginalAssets: false // 不删除源文件 }) ); config.output.filename = `./static/js/[name].${Timestamp}.js` config.output.chunkFilename = `./static/js/[name].${Timestamp}.js` config.performance = { hints: 'warning', //入口起点的最大体积 整数类型(以字节为单位) maxEntrypointSize: 50000000, //生成文件的最大体积 整数类型(以字节为单位 300k) maxAssetSize: 30000000, //只给出 js 文件的性能提示 assetFilter: function(assetFilename) { return assetFilename.endsWith('.js'); } } }, }, //停车收费 parking: { pages: { index: { entry: 'src/projects/parking/main.js', template: 'index/parking/index.html', filename: 'index.html', title: '小鹏管家停车收费' + title, } }, outputDir: 'dist/parking', devServer: { host: '0.0.0.0', port: 8080, //解析缓存 disableHostCheck: true, //支持gzip compress: true, }, chainWebpack: (config) => { config.entry.app = ['babel-polyfill', '../src/projects/parking/main.js'] config.resolve.alias .set('@', resolve('../src/projects/parking/')) .set('$project', resolve('../src/')) .set('$root', resolve('../')) config.plugins.delete('preload-index'); config.plugins.delete('prefetch-index'); config.optimization.minimize(true); //打包分析添加 //config.output.filename('js/[name].[hash].js').end(); //config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin) }, configureWebpack: config => { //开启gzip压缩,需要配置Nginx服务器gzip选项开启 config.plugins.push( new CompressionWebpackPlugin({ algorithm: 'gzip', //开启gzip test: /\.js$|\.html$|.\css/, // 匹配文件名 threshold: 10240, // 对超过10k的数据压缩 deleteOriginalAssets: false // 不删除源文件 }) ); config.output.filename = `./static/js/[name].${Timestamp}.js` config.output.chunkFilename = `./static/js/[name].${Timestamp}.js` config.performance = { hints: 'warning', //入口起点的最大体积 整数类型(以字节为单位) maxEntrypointSize: 50000000, //生成文件的最大体积 整数类型(以字节为单位 300k) maxAssetSize: 30000000, //只给出 js 文件的性能提示 assetFilter: function(assetFilename) { return assetFilename.endsWith('.js'); } } }, } } const configObj = config[projectName.name] module.exports = configObj