summaryrefslogtreecommitdiff
path: root/webpack.production.js
diff options
context:
space:
mode:
authorMax Wu2016-10-13 12:41:57 +0800
committerGitHub2016-10-13 12:41:57 +0800
commitaf461ac2d6171b6133701ce0817d14f18b4fd4b1 (patch)
tree58ae2135c69dacdac283538b6b5e54c8c816bd9f /webpack.production.js
parent53f88d82d1ea414dc95e8f6181c3cc6638573665 (diff)
parent773c0ce39e2da7ea155949b5a6dae986a747e89a (diff)
Merge pull request #195 from Yukaii/webpack-frontend
Use Webpack to bundle frontend code
Diffstat (limited to 'webpack.production.js')
-rw-r--r--webpack.production.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/webpack.production.js b/webpack.production.js
new file mode 100644
index 00000000..1c2190ab
--- /dev/null
+++ b/webpack.production.js
@@ -0,0 +1,91 @@
+var baseConfig = require('./webpackBaseConfig');
+var webpack = require('webpack');
+var ExtractTextPlugin = require("extract-text-webpack-plugin");
+var path = require('path');
+var HtmlWebpackPlugin = require('html-webpack-plugin');
+
+module.exports = Object.assign({}, baseConfig, {
+ plugins: [
+ new webpack.ProvidePlugin({
+ '_': 'lodash',
+ Visibility: "visibilityjs",
+ Cookies: "js-cookie",
+ emojify: "emojify.js",
+ key: "keymaster"
+ }),
+ new ExtractTextPlugin("[name].css"),
+ new webpack.optimize.CommonsChunkPlugin({
+ names: ["vendor", "public", "slide", "locale"],
+ children: true,
+ async: true,
+ filename: '[name].js',
+ minChunks: Infinity
+ }),
+ new HtmlWebpackPlugin({
+ template: 'public/views/includes/header.ejs',
+ chunks: ['vendor', 'index'],
+ filename: path.join(__dirname, 'public/views/build/index-header.ejs'),
+ inject: false
+ }),
+ new HtmlWebpackPlugin({
+ template: 'public/views/includes/scripts.ejs',
+ chunks: ['vendor', 'index'],
+ filename: path.join(__dirname, 'public/views/build/index-scripts.ejs'),
+ inject: false
+ }),
+ new HtmlWebpackPlugin({
+ template: 'public/views/includes/header.ejs',
+ chunks: ['vendor', 'locale'],
+ filename: path.join(__dirname, 'public/views/build/cover-header.ejs'),
+ inject: false
+ }),
+ new HtmlWebpackPlugin({
+ template: 'public/views/includes/scripts.ejs',
+ chunks: ['vendor', 'locale'],
+ filename: path.join(__dirname, 'public/views/build/cover-scripts.ejs'),
+ inject: false
+ }),
+ new HtmlWebpackPlugin({
+ template: 'public/views/includes/header.ejs',
+ chunks: ['vendor', 'public'],
+ filename: path.join(__dirname, 'public/views/build/pretty-header.ejs'),
+ inject: false
+ }),
+ new HtmlWebpackPlugin({
+ template: 'public/views/includes/scripts.ejs',
+ chunks: ['vendor', 'public'],
+ filename: path.join(__dirname, 'public/views/build/pretty-scripts.ejs'),
+ inject: false
+ }),
+ new HtmlWebpackPlugin({
+ template: 'public/views/includes/header.ejs',
+ chunks: ['vendor', 'slide'],
+ filename: path.join(__dirname, 'public/views/build/slide-header.ejs'),
+ inject: false
+ }),
+ new HtmlWebpackPlugin({
+ template: 'public/views/includes/scripts.ejs',
+ chunks: ['vendor', 'slide'],
+ filename: path.join(__dirname, 'public/views/build/slide-scripts.ejs'),
+ inject: false
+ }),
+ new webpack.DefinePlugin({
+ 'process.env': {
+ 'NODE_ENV': JSON.stringify('production')
+ }
+ }),
+ new webpack.optimize.UglifyJsPlugin({
+ compress: {
+ warnings: false
+ },
+ mangle: false,
+ sourceMap: false
+ })
+ ],
+
+ output: {
+ path: path.join(__dirname, 'public/build'),
+ publicPath: '/build/',
+ filename: '[id].[name].[hash].js'
+ },
+});