const CompressionPlugin = require('compression-webpack-plugin');
const webpack = require('webpack');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
module.exports = {
    publicPath: process.env.NODE_ENV === 'production' ? '' : '/',
    productionSourceMap: false,
    lintOnSave: false,

    chainWebpack: config => {
        if (process.env.NODE_ENV === 'production') {
            if (process.env.npm_config_report) {
                config
                    .plugin('webpack-bundle-analyzer')
                    .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
            }
            config.plugins.delete('prefetch');
        }
    },
    configureWebpack: config => {
        if (process.env.NODE_ENV === 'production') {
            config.optimization = {
                splitChunks: {
                    chunks: "all",          //async异步代码分割 initial同步代码分割 all同步异步分割都开启
                    minSize: 10000,         //字节 引入的文件大于30kb才进行分割
                    // minChunks: 2,           //模块至少使用次数
                    // maxAsyncRequests: 25,    //同时加载的模块数量最多是5个，只分割出同时引入的前5个文件
                    // maxInitialRequests: 30,  //首页加载的时候引入的文件最多3个
                    automaticNameDelimiter: '-', //缓存组和生成文件名称之间的连接符
                    // name: true,                  //缓存组里面的filename生效，覆盖默认命名
                    cacheGroups: {
                        // vue: {
                        //     name: "vue",
                        //     test: /[\\/]node_modules[\\/]vue[\\/]/,
                        //     test: /[\\/]node_modules[\\/]vue[\\/]/,
                        //     priority: -10
                        // },
                        // vuex: {
                        //     name: 'vuex',
                        //     test: /[\\/]node_modules[\\/]vuex[\\/]/,
                        //     priority: -10
                        // },
                        // 'vue-router': {
                        //     name: 'vue-router',
                        //     test: /[\\/]node_modules[\\/]vue-router[\\/]/,
                        //     priority: -10
                        // },
                        // 'element-ui': {
                        //     name: 'element-ui',
                        //     test: /[\\/]node_modules[\\/]element-ui[\\/]/,
                        //     priority: -10
                        // },
                        // vendors: {
                        //     test: /[\\\/]node_modules[\\\/]/,
                        //     priority: -20
                        // },
                    }
                }
            }
            // return {
            //     plugins: [
            //         new CompressionPlugin({
            //             test: /\.js$|\.html$|\.css$/,
            //             threshold: 10240,
            //             deleteOriginalAssets: false,
            //         }),
            //         new webpack.optimize.MinChunkSizePlugin({
            //             minChunkSize: 10000 // Minimum number of characters
            //         }),
            //         new WebpackLifeCyclePlugin(),
            //         new BundleAnalyzerPlugin()
            //     ]
            // }
            // config.plugins = [
            //     new CompressionPlugin({
            //         test: /\.js$|\.html$|\.css$/,
            //         threshold: 10240,
            //         deleteOriginalAssets: true,
            //     }),
            //     new webpack.optimize.MinChunkSizePlugin({
            //         minChunkSize: 10000 // Minimum number of characters
            //     }),
            //     new WebpackLifeCyclePlugin(),
            //     // new BundleAnalyzerPlugin()
            // ]
        }

    },
    parallel: true,

    devServer: {
        proxy: {
            '/': {
                // target: 'http://192.168.2.145:9600/spfm',
                // target: 'http://192.168.2.149:9600',
                // target: 'http://10.64.42.70:8088/',
                // target: 'http://114.215.71.182:29600',
                target: 'http://10.230.26.15:8000/spfm',
                // target: 'http://127.0.0.1:9600/',
                // target: 'http://192.168.0.103:9600/',
                // target: 'http://192.168.2.170:9600/',
                // target: 'http://192.168.2.169:9600/',
                changeOrigin: true
            }
        }
    },
    transpileDependencies: ['color-string'] // 此段为增加配置选项
}
