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: 8080,
			//解析缓存
			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');
			config.plugins.delete('prefetch');

			config.optimization.minimize(true);
		},
		configureWebpack: config => {
			/* //开启gzip压缩,需要配置Nginx服务器gzip选项开启
			config.plugins.push(
				new CompressionWebpackPlugin({
					filename: '[path].gz[query]',
					algorithm: 'gzip',
					test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
					threshold: 10240,
					minRatio: 0.8
				})
			); */

			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');
			config.plugins.delete('prefetch');

			config.optimization.minimize(true);
		},
		configureWebpack: (config) => {
			//开启gzip压缩,需要配置Nginx服务器gzip选项开启
			/* config.plugins.push(
				new CompressionWebpackPlugin({
					filename: '[path].gz[query]',
					algorithm: 'gzip',
					test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
					threshold: 10240,
					minRatio: 0.8
				})
			); */

			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');
			config.plugins.delete('prefetch');

			config.optimization.minimize(true);
		},
		configureWebpack: (config) => {
			/* //开启gzip压缩,需要配置Nginx服务器gzip选项开启
			config.plugins.push(
				new CompressionWebpackPlugin({
					filename: '[path].gz[query]',
					algorithm: 'gzip',
					test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
					threshold: 10240,
					minRatio: 0.8
				})
			); */

			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');
			config.plugins.delete('prefetch');

			config.optimization.minimize(true);
		},
		configureWebpack: (config) => {
			/* //开启gzip压缩,需要配置Nginx服务器gzip选项开启
			config.plugins.push(
				new CompressionWebpackPlugin({
					filename: '[path].gz[query]',
					algorithm: 'gzip',
					test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
					threshold: 10240,
					minRatio: 0.8
				})
			); */

			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
