From 42b08272ec021c872fc13bba765c288b63b72544 Mon Sep 17 00:00:00 2001 From: Tom Kirkpatrick Date: Wed, 20 Jun 2018 19:04:28 +0200 Subject: [PATCH 1/2] build(webpack): remove redundant NODE_ENV setting Webpack v4 introduced a new `mode` setting, which - amongst other things - automates the definition of the NODE_ENV environment variable. We already had the `mode` settings set in our webpack configs so this change is just to clean up some redundant code that is handled automatically by this setting. See: - https://webpack.js.org/concepts/mode/ --- package.json | 8 ++++---- webpack.config.base.js | 7 ------- webpack.config.main.prod.js | 8 ++------ webpack.config.renderer.dev.dll.js | 13 ------------- webpack.config.renderer.dev.js | 16 ---------------- webpack.config.renderer.prod.js | 14 -------------- 6 files changed, 6 insertions(+), 60 deletions(-) diff --git a/package.json b/package.json index c3c4a058..884a28ec 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "description": "desktop application for the lightning network", "scripts": { "build": "concurrently --raw \"npm run build-main\" \"npm run build-renderer\"", - "build-dll": "cross-env NODE_ENV=development node --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.renderer.dev.dll.js --colors", - "build-main": "cross-env NODE_ENV=production node --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.main.prod.js --colors", - "build-renderer": "cross-env NODE_ENV=production node --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.renderer.prod.js --colors", + "build-dll": "node --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.renderer.dev.dll.js --colors", + "build-main": "node --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.main.prod.js --colors", + "build-renderer": "node --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.renderer.prod.js --colors", "dev": "cross-env START_HOT=1 npm run start-renderer-dev", "flow": "flow", "flow-typed": "rimraf flow-typed/npm && flow-typed install --overwrite || true", @@ -28,7 +28,7 @@ "prestart": "npm run build", "start": "cross-env NODE_ENV=production electron ./app/", "start-main-dev": "cross-env HOT=1 NODE_ENV=development electron -r babel-register ./app/main.dev", - "start-renderer-dev": "cross-env NODE_ENV=development node --trace-warnings -r babel-register ./node_modules/webpack-dev-server/bin/webpack-dev-server --config webpack.config.renderer.dev.js", + "start-renderer-dev": "node --trace-warnings -r babel-register ./node_modules/webpack-dev-server/bin/webpack-dev-server --config webpack.config.renderer.dev.js", "test": "cross-env NODE_ENV=test BABEL_DISABLE_CACHE=1 node --trace-warnings ./test/runTests.js", "test-ci": "npm run package && npm run test && npm run test-e2e", "test-all": "npm run lint && npm run lint-styles && npm run flow && npm run build && npm run test && npm run test-e2e", diff --git a/webpack.config.base.js b/webpack.config.base.js index 20d55222..e6cc26ea 100644 --- a/webpack.config.base.js +++ b/webpack.config.base.js @@ -3,7 +3,6 @@ */ import path from 'path' -import webpack from 'webpack' import { dependencies as externals } from './app/package.json' export default { @@ -39,12 +38,6 @@ export default { modules: [path.join(__dirname, 'app'), 'node_modules'] }, - plugins: [ - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'production') - }) - ], - optimization: { namedModules: true } diff --git a/webpack.config.main.prod.js b/webpack.config.main.prod.js index 0e6c3a5d..c0b8bccb 100644 --- a/webpack.config.main.prod.js +++ b/webpack.config.main.prod.js @@ -39,13 +39,9 @@ export default merge.smart(baseConfig, { * * Useful for allowing different behaviour between development builds and * release builds - * - * NODE_ENV should be production so that modules do not perform certain - * development checks */ - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'production'), - 'process.env.DEBUG_PROD': JSON.stringify(process.env.DEBUG_PROD || 'false') + new webpack.EnvironmentPlugin({ + DEBUG_PROD: false }) ], diff --git a/webpack.config.renderer.dev.dll.js b/webpack.config.renderer.dev.dll.js index db9ab9a8..d15eccd7 100644 --- a/webpack.config.renderer.dev.dll.js +++ b/webpack.config.renderer.dev.dll.js @@ -178,19 +178,6 @@ export default merge.smart(baseConfig, { name: '[name]' }), - /** - * Create global constants which can be configured at compile time. - * - * Useful for allowing different behaviour between development builds and - * release builds - * - * NODE_ENV should be production so that modules do not perform certain - * development checks - */ - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development') - }), - new webpack.LoaderOptionsPlugin({ debug: true, options: { diff --git a/webpack.config.renderer.dev.js b/webpack.config.renderer.dev.js index 4757381e..ee40841e 100644 --- a/webpack.config.renderer.dev.js +++ b/webpack.config.renderer.dev.js @@ -212,22 +212,6 @@ export default merge.smart(baseConfig, { // multiStep: true }), - /** - * Create global constants which can be configured at compile time. - * - * Useful for allowing different behaviour between development builds and - * release builds - * - * NODE_ENV should be production so that modules do not perform certain - * development checks - * - * By default, use 'development' as NODE_ENV. This can be overriden with - * 'staging', for example, by changing the ENV variables in the npm scripts - */ - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development') - }), - new webpack.LoaderOptionsPlugin({ debug: true }), diff --git a/webpack.config.renderer.prod.js b/webpack.config.renderer.prod.js index 9e3f7138..42c25162 100644 --- a/webpack.config.renderer.prod.js +++ b/webpack.config.renderer.prod.js @@ -3,7 +3,6 @@ */ import path from 'path' -import webpack from 'webpack' import ExtractTextPlugin from 'extract-text-webpack-plugin' import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer' import merge from 'webpack-merge' @@ -143,19 +142,6 @@ export default merge.smart(baseConfig, { }, plugins: [ - /** - * Create global constants which can be configured at compile time. - * - * Useful for allowing different behaviour between development builds and - * release builds - * - * NODE_ENV should be production so that modules do not perform certain - * development checks - */ - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'production') - }), - new ExtractTextPlugin('style.css'), new BundleAnalyzerPlugin({ From 3e60d518b285d5b45d4938015fe2ca85fe7bdf83 Mon Sep 17 00:00:00 2001 From: Tom Kirkpatrick Date: Wed, 20 Jun 2018 18:55:24 +0200 Subject: [PATCH 2/2] build(webpack): remove redundant environment check Webpack environment `mode` is defined directly in our environment specific webpack config files. Due to this, we no longer need to manually set `NODE_ENV` or check to ensure that it has been set. See: - https://webpack.js.org/concepts/mode/ --- internals/scripts/CheckNodeEnv.js | 12 ------------ webpack.config.main.prod.js | 3 --- webpack.config.renderer.dev.dll.js | 3 --- webpack.config.renderer.dev.js | 3 --- webpack.config.renderer.prod.js | 3 --- 5 files changed, 24 deletions(-) delete mode 100644 internals/scripts/CheckNodeEnv.js diff --git a/internals/scripts/CheckNodeEnv.js b/internals/scripts/CheckNodeEnv.js deleted file mode 100644 index a06be612..00000000 --- a/internals/scripts/CheckNodeEnv.js +++ /dev/null @@ -1,12 +0,0 @@ -// @flow -import chalk from 'chalk' - -export default function CheckNodeEnv(expectedEnv: string) { - if (!expectedEnv) { - throw new Error('"expectedEnv" not set') - } - - if (process.env.NODE_ENV !== expectedEnv) { - throw new Error(chalk.whiteBright.bgRed.bold(`"process.env.NODE_ENV" must be "${expectedEnv}" to use this webpack config`)) - } -} diff --git a/webpack.config.main.prod.js b/webpack.config.main.prod.js index c0b8bccb..f6e9a55e 100644 --- a/webpack.config.main.prod.js +++ b/webpack.config.main.prod.js @@ -6,9 +6,6 @@ import webpack from 'webpack' import merge from 'webpack-merge' import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer' import baseConfig from './webpack.config.base' -import CheckNodeEnv from './internals/scripts/CheckNodeEnv' - -CheckNodeEnv('production') export default merge.smart(baseConfig, { devtool: 'source-map', diff --git a/webpack.config.renderer.dev.dll.js b/webpack.config.renderer.dev.dll.js index d15eccd7..f5255e0f 100644 --- a/webpack.config.renderer.dev.dll.js +++ b/webpack.config.renderer.dev.dll.js @@ -7,9 +7,6 @@ import path from 'path' import merge from 'webpack-merge' import baseConfig from './webpack.config.base' import { dependencies } from './package.json' -import CheckNodeEnv from './internals/scripts/CheckNodeEnv' - -CheckNodeEnv('development') const dist = path.resolve(process.cwd(), 'dll') diff --git a/webpack.config.renderer.dev.js b/webpack.config.renderer.dev.js index ee40841e..192f00a7 100644 --- a/webpack.config.renderer.dev.js +++ b/webpack.config.renderer.dev.js @@ -14,11 +14,8 @@ import merge from 'webpack-merge' import { spawn, execSync } from 'child_process' import ExtractTextPlugin from 'extract-text-webpack-plugin' import baseConfig from './webpack.config.base' -import CheckNodeEnv from './internals/scripts/CheckNodeEnv' import { mainLog } from './app/utils/log' -CheckNodeEnv('development') - const port = process.env.PORT || 1212 const publicPath = `http://localhost:${port}/dist` const dll = path.resolve(process.cwd(), 'dll') diff --git a/webpack.config.renderer.prod.js b/webpack.config.renderer.prod.js index 42c25162..531fc473 100644 --- a/webpack.config.renderer.prod.js +++ b/webpack.config.renderer.prod.js @@ -7,9 +7,6 @@ import ExtractTextPlugin from 'extract-text-webpack-plugin' import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer' import merge from 'webpack-merge' import baseConfig from './webpack.config.base' -import CheckNodeEnv from './internals/scripts/CheckNodeEnv' - -CheckNodeEnv('production') export default merge.smart(baseConfig, { devtool: 'source-map',