From fdc3207724fde8c0c3fae7e18d7ec8463e72e737 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Wed, 16 Mar 2016 23:00:33 -0400 Subject: Webpack optimizations and fixes --- webapp/Makefile | 19 ++++++++++++++++--- webapp/package.json | 6 ++++-- webapp/webpack.config.js | 30 +++++++++++++++++++++++------- 3 files changed, 43 insertions(+), 12 deletions(-) (limited to 'webapp') diff --git a/webapp/Makefile b/webapp/Makefile index 99f896e53..88ee625a4 100644 --- a/webapp/Makefile +++ b/webapp/Makefile @@ -1,4 +1,4 @@ -.PHONY: build test +.PHONY: build test run clean test: @echo Checking for style guide compliance @@ -12,7 +12,20 @@ test: touch $@ -build: .npminstall - @echo Building mattermost web client +build: | .npminstall test + @echo Building mattermost Webapp npm run build + +run: .npminstall + @echo Running mattermost Webapp for development + + npm run run + + +clean: + @echo Cleaning Webapp + + rm -rf dist + rm -rf node_modules + rm .npminstall diff --git a/webapp/package.json b/webapp/package.json index 0d88a6212..25003114e 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -31,7 +31,7 @@ "babel-loader": "6.2.4", "babel-plugin-transform-runtime": "6.6.0", "babel-polyfill": "6.7.2", - "babel-preset-es2015": "6.6.0", + "babel-preset-es2015-webpack": "6.4.0", "babel-preset-react": "6.5.0", "babel-preset-stage-0": "6.5.0", "eslint": "2.2.0", @@ -39,6 +39,7 @@ "exports-loader": "0.6.3", "extract-text-webpack-plugin": "1.0.1", "file-loader": "0.8.5", + "url-loader": "0.5.7", "html-loader": "0.4.3", "copy-webpack-plugin": "1.1.1", "css-loader": "0.23.1", @@ -52,6 +53,7 @@ }, "scripts": { "check": "eslint --ext \".jsx\" --ignore-pattern node_modules --quiet .", - "build": "webpack --progress" + "build": "webpack --optimize-dedupe", + "run": "webpack --progress" } } diff --git a/webapp/webpack.config.js b/webapp/webpack.config.js index 14abf6ffa..5e1df9bfe 100644 --- a/webapp/webpack.config.js +++ b/webapp/webpack.config.js @@ -17,20 +17,21 @@ module.exports = { loaders: [ { test: /\.jsx?$/, - loader: 'babel-loader', + loader: 'babel', exclude: /(node_modules|non_npm_dependencies)/, query: { - presets: ['react', 'es2015', 'stage-0'], - plugins: ['transform-runtime'] + presets: ['react', 'es2015-webpack', 'stage-0'], + plugins: ['transform-runtime'], + cacheDirectory: true } }, { test: /\.json$/, - loader: 'json-loader' + loader: 'json' }, { test: /(node_modules|non_npm_dependencies)\/.+\.(js|jsx)$/, - loader: 'imports-loader', + loader: 'imports', query: { $: 'jquery', jQuery: 'jquery' @@ -46,7 +47,7 @@ module.exports = { }, { test: /\.(png|eot|tiff|svg|woff2|woff|ttf|gif)$/, - loader: 'file-loader', + loader: 'file', query: { name: 'files/[hash].[ext]' } @@ -67,7 +68,22 @@ module.exports = { htmlExtract, new CopyWebpackPlugin([ {from: 'images/emoji', to: 'emoji'} - ]) + ]), + new webpack.optimize.UglifyJsPlugin({ + 'screw-ie8': true, + mangle: { + toplevel: false + }, + compress: { + warnings: false + }, + comments: false + }), + new webpack.optimize.AggressiveMergingPlugin(), + new webpack.LoaderOptionsPlugin({ + minimize: true, + debug: false + }) ], resolve: { alias: { -- cgit v1.2.3-1-g7c22