From 0fdd9fc3dc15989b182659dd216a58688b28d537 Mon Sep 17 00:00:00 2001 From: James Mullaney Date: Tue, 16 Jan 2018 16:08:30 +0000 Subject: [PATCH 1/2] Webpack 3 --- lib/tools/getWebpackConfig.js | 1 + package.json | 2 +- yarn.lock | 61 ++++++++++++++++++----------------- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/lib/tools/getWebpackConfig.js b/lib/tools/getWebpackConfig.js index 690b11d938..026717296f 100644 --- a/lib/tools/getWebpackConfig.js +++ b/lib/tools/getWebpackConfig.js @@ -148,6 +148,7 @@ function getWebpackConfig(args) { }, plugins: [ + new webpack.optimize.ModuleConcatenationPlugin(), // Emit a file with assets paths // https://github.com/sporto/assets-webpack-plugin#options new AssetsPlugin({ diff --git a/package.json b/package.json index ab4af1569c..c25a7ac809 100644 --- a/package.json +++ b/package.json @@ -227,7 +227,7 @@ "velocity-react": "1.1.4", "victory": "^0.12.1", "warning": "^2.1.0", - "webpack": "^2.2.1", + "webpack": "3.0.0", "webpack-dev-middleware": "^1.10.1", "webpack-node-externals": "^1.5.4", "winston": "^2.1.1", diff --git a/yarn.lock b/yarn.lock index b32ac52b6c..dc3e3e7b6a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -113,7 +113,7 @@ agent-base@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-1.0.2.tgz#6890d3fb217004b62b70f8928e0fae5f8952a706" -ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: +ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" @@ -3448,7 +3448,7 @@ engine.io@~1.8.4: engine.io-parser "1.3.2" ws "1.1.4" -enhanced-resolve@^3.3.0, enhanced-resolve@^3.4.0: +enhanced-resolve@^3.0.0, enhanced-resolve@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" dependencies: @@ -11164,7 +11164,7 @@ ua-parser-js@^0.7.9: version "0.7.17" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" -uglify-js@^2.6, uglify-js@^2.8.27, uglify-js@^2.8.29: +uglify-js@^2.6, uglify-js@^2.8.29: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" dependencies: @@ -11194,7 +11194,7 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" -uglifyjs-webpack-plugin@^0.4.6: +uglifyjs-webpack-plugin@^0.4.4, uglifyjs-webpack-plugin@^0.4.6: version "0.4.6" resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" dependencies: @@ -11645,6 +11645,33 @@ webpack-sources@^1.0.1: source-list-map "^2.0.0" source-map "~0.5.3" +webpack@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.0.0.tgz#ee9bcebf21247f7153cb410168cab45e3a59d4d7" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^5.1.5" + ajv-keywords "^2.0.0" + async "^2.1.2" + enhanced-resolve "^3.0.0" + escope "^3.6.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^3.1.0" + tapable "~0.2.5" + uglifyjs-webpack-plugin "^0.4.4" + watchpack "^1.3.1" + webpack-sources "^1.0.1" + yargs "^6.0.0" + webpack@3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.6.0.tgz#a89a929fbee205d35a4fa2cc487be9cbec8898bc" @@ -11692,32 +11719,6 @@ webpack@^1.12.9: watchpack "^0.2.1" webpack-core "~0.6.9" -webpack@^2.2.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.7.0.tgz#b2a1226804373ffd3d03ea9c6bd525067034f6b1" - dependencies: - acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^4.7.0" - ajv-keywords "^1.1.1" - async "^2.1.2" - enhanced-resolve "^3.3.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" - loader-runner "^2.3.0" - loader-utils "^0.2.16" - memory-fs "~0.4.1" - mkdirp "~0.5.0" - node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^3.1.0" - tapable "~0.2.5" - uglify-js "^2.8.27" - watchpack "^1.3.1" - webpack-sources "^1.0.1" - yargs "^6.0.0" - weedout@~0.1.0: version "0.1.3" resolved "https://registry.yarnpkg.com/weedout/-/weedout-0.1.3.tgz#cbf2a842c3e65abf7858480de21668d8cf87d300" From 12d28b160b2bbe6fa2243461a61709e825109ebc Mon Sep 17 00:00:00 2001 From: James Mullaney Date: Tue, 16 Jan 2018 17:36:40 +0000 Subject: [PATCH 2/2] perf: HardSource caching and updated to webpack 3.10 --- .gitignore | 2 +- lib/tools/getWebpackConfig.js | 2 + package.json | 3 +- yarn.lock | 109 +++++++++++++++++++++++----------- 4 files changed, 79 insertions(+), 37 deletions(-) diff --git a/.gitignore b/.gitignore index 086e77cbda..8c2b019f0e 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,7 @@ api/logs/* dist/ dump.rdb node_modules/ -npm-debug.log +npm-debug.log* pids/ static/logos/*.* storage/*.* diff --git a/lib/tools/getWebpackConfig.js b/lib/tools/getWebpackConfig.js index 026717296f..b02ddedfa4 100644 --- a/lib/tools/getWebpackConfig.js +++ b/lib/tools/getWebpackConfig.js @@ -5,6 +5,7 @@ const AssetsPlugin = require('assets-webpack-plugin'); const StatsPlugin = require('stats-webpack-plugin'); const CopyPlugin = require('copy-webpack-plugin'); const nodeExternals = require('webpack-node-externals'); +const HardSourceWebpackPlugin = require('hard-source-webpack-plugin'); // Common configuration chunk to be used for both // client-side and server-side bundles @@ -148,6 +149,7 @@ function getWebpackConfig(args) { }, plugins: [ + new HardSourceWebpackPlugin(), new webpack.optimize.ModuleConcatenationPlugin(), // Emit a file with assets paths // https://github.com/sporto/assets-webpack-plugin#options diff --git a/package.json b/package.json index c25a7ac809..66e19ed6e4 100644 --- a/package.json +++ b/package.json @@ -97,6 +97,7 @@ "file-loader": "^0.8.5", "file-stream-rotator": "^0.0.6", "git-rev": "^0.2.1", + "hard-source-webpack-plugin": "^0.5.15", "helmet": "^2.1.1", "highland": "^2.8.1", "hoist-non-react-statics": "^1.0.3", @@ -227,7 +228,7 @@ "velocity-react": "1.1.4", "victory": "^0.12.1", "warning": "^2.1.0", - "webpack": "3.0.0", + "webpack": "^3.10", "webpack-dev-middleware": "^1.10.1", "webpack-node-externals": "^1.5.4", "winston": "^2.1.1", diff --git a/yarn.lock b/yarn.lock index dc3e3e7b6a..bececeedb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3119,6 +3119,10 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + detect-node@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" @@ -3448,7 +3452,7 @@ engine.io@~1.8.4: engine.io-parser "1.3.2" ws "1.1.4" -enhanced-resolve@^3.0.0, enhanced-resolve@^3.4.0: +enhanced-resolve@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" dependencies: @@ -4718,6 +4722,20 @@ har-validator@~5.0.3: ajv "^5.1.0" har-schema "^2.0.0" +hard-source-webpack-plugin@^0.5.15: + version "0.5.15" + resolved "https://registry.yarnpkg.com/hard-source-webpack-plugin/-/hard-source-webpack-plugin-0.5.15.tgz#7fefcd190d49820bb5d91b35783a447689d64780" + dependencies: + lodash "^4.15.0" + mkdirp "^0.5.1" + node-object-hash "^1.2.0" + rimraf "^2.6.2" + source-list-map "^0.1.6" + source-map "^0.5.6" + webpack-core "~0.6.0" + webpack-sources "^1.0.1" + write-json-file "^2.3.0" + harmony-reflect@^1.4.6: version "1.5.1" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.5.1.tgz#b54ca617b00cc8aef559bbb17b3d85431dc7e329" @@ -7483,6 +7501,10 @@ node-notifier@^5.0.1: shellwords "^0.1.0" which "^1.2.12" +node-object-hash@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-1.3.0.tgz#7f294f5afec6b08d713e40d40a95ec793e05baf3" + node-pre-gyp@^0.6.36: version "0.6.38" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.38.tgz#e92a20f83416415bb4086f6d1fb78b3da73d113d" @@ -10096,7 +10118,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.0, rimraf@^2.5.1, rimraf@^2.6.0, rimraf@^2.6.1: +rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.0, rimraf@^2.5.1, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -10535,7 +10557,13 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -source-list-map@^0.1.4, source-list-map@~0.1.7: +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^0.1.4, source-list-map@^0.1.6, source-list-map@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" @@ -10914,7 +10942,7 @@ tapable@^0.1.8, tapable@~0.1.8: version "0.1.10" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" -tapable@^0.2.7, tapable@~0.2.5: +tapable@^0.2.7: version "0.2.8" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" @@ -11194,7 +11222,7 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" -uglifyjs-webpack-plugin@^0.4.4, uglifyjs-webpack-plugin@^0.4.6: +uglifyjs-webpack-plugin@^0.4.6: version "0.4.6" resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" dependencies: @@ -11561,7 +11589,7 @@ watchpack@^0.2.1: chokidar "^1.0.0" graceful-fs "^4.1.2" -watchpack@^1.3.1, watchpack@^1.4.0: +watchpack@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" dependencies: @@ -11587,7 +11615,7 @@ webidl-conversions@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" -webpack-core@~0.6.9: +webpack-core@~0.6.0, webpack-core@~0.6.9: version "0.6.9" resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" dependencies: @@ -11645,33 +11673,6 @@ webpack-sources@^1.0.1: source-list-map "^2.0.0" source-map "~0.5.3" -webpack@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.0.0.tgz#ee9bcebf21247f7153cb410168cab45e3a59d4d7" - dependencies: - acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^5.1.5" - ajv-keywords "^2.0.0" - async "^2.1.2" - enhanced-resolve "^3.0.0" - escope "^3.6.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - mkdirp "~0.5.0" - node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^3.1.0" - tapable "~0.2.5" - uglifyjs-webpack-plugin "^0.4.4" - watchpack "^1.3.1" - webpack-sources "^1.0.1" - yargs "^6.0.0" - webpack@3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.6.0.tgz#a89a929fbee205d35a4fa2cc487be9cbec8898bc" @@ -11719,6 +11720,33 @@ webpack@^1.12.9: watchpack "^0.2.1" webpack-core "~0.6.9" +webpack@^3.10: + version "3.10.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^5.1.5" + ajv-keywords "^2.0.0" + async "^2.1.2" + enhanced-resolve "^3.4.0" + escope "^3.6.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^4.2.1" + tapable "^0.2.7" + uglifyjs-webpack-plugin "^0.4.6" + watchpack "^1.4.0" + webpack-sources "^1.0.1" + yargs "^8.0.2" + weedout@~0.1.0: version "0.1.3" resolved "https://registry.yarnpkg.com/weedout/-/weedout-0.1.3.tgz#cbf2a842c3e65abf7858480de21668d8cf87d300" @@ -11848,6 +11876,17 @@ write-file-stdout@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/write-file-stdout/-/write-file-stdout-0.0.2.tgz#c252d7c7c5b1b402897630e3453c7bfe690d9ca1" +write-json-file@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + pify "^3.0.0" + sort-keys "^2.0.0" + write-file-atomic "^2.0.0" + write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" @@ -12021,7 +12060,7 @@ yargs@^4.8.0: y18n "^3.2.1" yargs-parser "^2.4.1" -yargs@^6.0.0, yargs@^6.3.0: +yargs@^6.3.0: version "6.6.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" dependencies: