webpack.prod.config.js 1.9 KB
Newer Older
B
BingBlog 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const path = require('path');
const autoprefixer = require('autoprefixer');
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin');
const bizCss = new ExtractTextPlugin('biz.[chunkhash].css');
let merge = require('webpack-merge');
let baseWebpackConfig = require('./webpack.config');
const autoPrefixOptions = {
    browsers: [
        'iOS >= 7',
        'Android >= 4.0',
        'ExplorerMobile >= 10',
        'ie >= 9'
    ]
};

/**
 * pro config
 *
 * @type {Object}
 */

module.exports = merge(baseWebpackConfig, {
    plugins: [
        new webpack.DefinePlugin({
            'process.env': {
                'NODE_ENV': 'production'
            }
        }),

        new webpack.LoaderOptionsPlugin({
            test: /\.(styl|san)$/,
            san: {
                autoprefixer: autoPrefixOptions
            }
        }),

        new webpack.optimize.CommonsChunkPlugin({
            name: 'vendor',
            filename: 'vendor.[chunkhash].js',
            minChunks: function (module, count) {
                const resPath = module.resource;
                return resPath && /\.js$/.test(resPath)
                    && resPath.indexOf(
                        path.join(__dirname, '../node_modules')
                    ) === 0;
            }
        }),

        new webpack.optimize.CommonsChunkPlugin({
            name: 'manifest',
            minChunks: Infinity
        }),

        new webpack.optimize.UglifyJsPlugin({
            compress: {
                'screw_ie8': true, // no ie6/7/8
                'warnings': false
            },
            comments: false,
            sourceMap: false
        }),

        bizCss,

        new OptimizeCSSPlugin({
            cssProcessorOptions: {
                safe: true
            }
        })
    ]
});