const path = require('path');
const Timestamp = new Date().getTime();
let title = '';
if (process.env.VUE_APP_NODE_NAME == 'production') {
	title = ''
} else if (process.env.VUE_APP_NODE_NAME == 'test') {
	title = '(测试)'
} else {
	title = '(开发)'
}
const CompressionWebpackPlugin = require("compression-webpack-plugin")
const productionGzipExtensions = ['js', 'css']

const conf =  {
		pages: {
			index: {
				entry: 'src/main.js',
				template: 'index/business/index.html',
				filename: 'index.html',
				title: '小鹏管家' + title,
			}
		},
		outputDir: 'dist',
		devServer: {
			host: '0.0.0.0',
			port: 80,
			//解析缓存
			disableHostCheck: true,
			//支持gzip
			compress: true,
		},
		chainWebpack: (config) => {
			config.entry.app = ['babel-polyfill', '../src/main.js']
			config.resolve.alias
				.set('@', resolve('src'))
			

			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');
				}
			}
		},
	};

function resolve(dir) {
	return path.join(__dirname, dir)
}


module.exports = {
	pages: conf.pages,
	publicPath: './',
	outputDir: conf.outputDir + '_' + process.env.OUT_PUT_NAME,
	assetsDir: 'static',
	lintOnSave: false,
	devServer: conf.devServer,
	//不输出map
	productionSourceMap: false,
	chainWebpack: conf.chainWebpack,
	configureWebpack: conf.configureWebpack,
	css: {
		extract: {
			filename: `./static/css/[name].${Timestamp}.css`,
			chunkFilename: `./static/css/[name].${Timestamp}.css`
		},
		sourceMap: false,
		loaderOptions: {
			// 给 sass-loader 传递选项
			sass: {
				// @/ 是 src/ 的别名
				// prependData: `@import "@/assets/scss/base.scss";`
			}
		}
	}
};
