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
|
const path = require('path') const webpack = require('webpack') const merge = require('webpack-merge') const ExtractTextPlugin = require('extract-text-webpack-plugin') const UglifyJSPlugin = require('uglifyjs-webpack-plugin') const HtmlPlugin = require('html-webpack-plugin') const baseConfig = require('./webpack.config.base.js')
const prodConfig = { entry: { app: path.resolve(__dirname, '../src/app.tsx'), }, module: { rules: [ test: /\.scss$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: [ { loader: 'css-loader', options: { modules: true, name: '[local]-[name]-[hash]', importLoaders: 3, }, }, ], exclude: /node_modules/, }), { loader: 'postcss-loader', options: { config: path.resolve(__dirname, './config/postcss.config.json') } }, 'resolve-url-loader', 'sass-loader', ], }, devtool: 'inline-source-map', plugins: [ new webpack.DefinePluing({ 'process.env.NODE_ENV': 'production', }), new webpack.optimize.CommonsChunkPlugin({ name: 'app', filename: 'scripts/vendor-[hash].min.js', }), new HtmlPlugin({ title: '生产', template: path.resolve(__dirnaem, '../src/templates/index.html'), minify: { collapseBooleanAttributes: true, collapseInlineTagWhitespace: true, collapseWhitespace: true, minifyCSS: true, minifyJS: true, removeAttributeQuotes: true, removeComments: true, removeEmptyAttributes: true, removeRedundantAttributes: true, removeTagWhitespace: true, }, }), new ExtractTextPlugin({ filename: 'styles/[name]-[contenthash].css', }), new UglifyJSPlugin(), ], }
|