'use strict'; process.env.NODE_ENV = 'production'; const webpack = require('webpack'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const ProgressPlugin = require('webpack/lib/ProgressPlugin'); const BabelMinifyPlugin = require('babel-minify-webpack-plugin'); // const OfflinePlugin = require('offline-plugin') const base = require('./webpack.base'); const config = require('./config'); const rimraf = require('rimraf'); const distFolder = 'dist/'; // Clear out build folder rimraf.sync(distFolder, { rmdirSync: true }); base.devtool = 'source-map'; base.module.loaders.push( { test: /\.css$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }) }, { test: /\.scss$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: ['css-loader', 'sass-loader'] }) }, { test: /\.less$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: ['css-loader', 'less-loader'] }) } ); // a white list to add dependencies to vendor chunk base.entry.vendor = config.vendor; // use hash filename to support long-term caching base.output.filename = '[name].[chunkhash:8].js'; // add webpack plugins base.plugins.push( new ProgressPlugin(), new ExtractTextPlugin('[name].[chunkhash:8].css'), new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify('production') }), new BabelMinifyPlugin(undefined, { comments: false }), // extract vendor chunks new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', filename: 'vendor.[chunkhash:8].js' }) // For progressive web apps // new OfflinePlugin({ // relativePaths: false, // AppCache: false, // ServiceWorker: { // events: true // } // }) ); // minimize webpack output base.stats = { // Add children information children: false, // Add chunk information (setting this to `false` allows for a less verbose output) chunks: false, // Add built modules information to chunk information chunkModules: false, chunkOrigins: false, modules: false }; module.exports = base;