Initial attempt at webpack 4 upgrade, still not working.

This commit is contained in:
Will O'Beirne 2018-02-27 13:33:46 -05:00
parent 296b78d62e
commit a2006a7285
No known key found for this signature in database
GPG Key ID: 44C190DB5DEAF9F6
4 changed files with 42 additions and 45 deletions

View File

@ -22,7 +22,6 @@
"ethereumjs-util": "5.1.4", "ethereumjs-util": "5.1.4",
"ethereumjs-wallet": "0.6.0", "ethereumjs-wallet": "0.6.0",
"font-awesome": "4.7.0", "font-awesome": "4.7.0",
"hard-source-webpack-plugin": "0.5.16",
"hdkey": "0.8.0", "hdkey": "0.8.0",
"idna-uts46": "1.1.0", "idna-uts46": "1.1.0",
"jsonschema": "1.2.2", "jsonschema": "1.2.2",
@ -92,8 +91,9 @@
"file-loader": "1.1.10", "file-loader": "1.1.10",
"friendly-errors-webpack-plugin": "1.6.1", "friendly-errors-webpack-plugin": "1.6.1",
"glob": "7.1.2", "glob": "7.1.2",
"hard-source-webpack-plugin": "0.6.0",
"hoist-non-react-statics": "2.5.0", "hoist-non-react-statics": "2.5.0",
"html-webpack-plugin": "2.30.1", "html-webpack-plugin": "github:webpack-contrib/html-webpack-plugin#1dee37e",
"husky": "0.14.3", "husky": "0.14.3",
"image-webpack-loader": "4.1.0", "image-webpack-loader": "4.1.0",
"jest": "22.1.4", "jest": "22.1.4",
@ -126,26 +126,27 @@
"typescript": "2.6.2", "typescript": "2.6.2",
"url-loader": "0.6.2", "url-loader": "0.6.2",
"url-search-params-polyfill": "2.0.3", "url-search-params-polyfill": "2.0.3",
"webpack": "3.11.0", "webpack": "4.0.1",
"webpack-cli": "2.0.9",
"webpack-dev-middleware": "2.0.6", "webpack-dev-middleware": "2.0.6",
"webpack-hot-middleware": "2.21.0", "webpack-hot-middleware": "2.21.0",
"webpack-sources": "1.0.1", "webpack-sources": "1.0.1",
"webpack-subresource-integrity": "1.0.4", "webpack-subresource-integrity": "1.0.4",
"worker-loader": "1.1.1", "what-input": "5.0.5",
"what-input": "5.0.5" "worker-loader": "1.1.1"
}, },
"scripts": { "scripts": {
"freezer": "webpack --config=./webpack_config/webpack.freezer.js && node ./dist/freezer.js", "freezer": "webpack --config=./webpack_config/webpack.freezer.js && node ./dist/freezer.js",
"freezer:validate": "npm run freezer -- --validate", "freezer:validate": "npm run freezer -- --validate",
"db": "nodemon ./db", "db": "nodemon ./db",
"build": "webpack --config webpack_config/webpack.prod.js", "build": "webpack --mode=production --config webpack_config/webpack.prod.js",
"prebuild": "check-node-version --package", "prebuild": "check-node-version --package",
"build:downloadable": "webpack --config webpack_config/webpack.html.js", "build:downloadable": "webpack --mode=production --config webpack_config/webpack.html.js",
"prebuild:downloadable": "check-node-version --package", "prebuild:downloadable": "check-node-version --package",
"build:electron": "webpack --config webpack_config/webpack.electron-prod.js && node webpack_config/buildElectron.js", "build:electron": "webpack --mode=production --config webpack_config/webpack.electron-prod.js && node webpack_config/buildElectron.js",
"build:electron:osx": "webpack --config webpack_config/webpack.electron-prod.js && ELECTRON_OS=osx node webpack_config/buildElectron.js", "build:electron:osx": "webpack --mode=production --config webpack_config/webpack.electron-prod.js && ELECTRON_OS=osx node webpack_config/buildElectron.js",
"build:electron:windows": "webpack --config webpack_config/webpack.electron-prod.js && ELECTRON_OS=windows node webpack_config/buildElectron.js", "build:electron:windows": "webpack --mode=production --config webpack_config/webpack.electron-prod.js && ELECTRON_OS=windows node webpack_config/buildElectron.js",
"build:electron:linux": "webpack --config webpack_config/webpack.electron-prod.js && ELECTRON_OS=linux node webpack_config/buildElectron.js", "build:electron:linux": "webpack --mode=production --config webpack_config/webpack.electron-prod.js && ELECTRON_OS=linux node webpack_config/buildElectron.js",
"prebuild:electron": "check-node-version --package", "prebuild:electron": "check-node-version --package",
"test:coverage": "jest --config=jest_config/jest.config.json --coverage", "test:coverage": "jest --config=jest_config/jest.config.json --coverage",
"test": "jest --config=jest_config/jest.config.json", "test": "jest --config=jest_config/jest.config.json",

View File

@ -45,7 +45,7 @@ const devMiddleWare = require('webpack-dev-middleware')(compiler, {
app.use(devMiddleWare); app.use(devMiddleWare);
app.use( app.use(
require('webpack-hot-middleware')(compiler, { require('webpack-hot-middleware')(compiler, {
log: console.info log: false
}) })
); );

View File

@ -6,10 +6,9 @@ const threadLoader = require('thread-loader');
const HtmlWebpackPlugin = require('html-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin');
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin'); const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
const AutoDllPlugin = require('autodll-webpack-plugin');
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');
const FaviconsWebpackPlugin = require('favicons-webpack-plugin'); const FaviconsWebpackPlugin = require('favicons-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin'); const ExtractTextPlugin = require('extract-text-webpack-plugin');
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');
const ProgressPlugin = require('webpack/lib/ProgressPlugin'); const ProgressPlugin = require('webpack/lib/ProgressPlugin');
const BabelMinifyPlugin = require('babel-minify-webpack-plugin'); const BabelMinifyPlugin = require('babel-minify-webpack-plugin');
const SriPlugin = require('webpack-subresource-integrity'); const SriPlugin = require('webpack-subresource-integrity');
@ -214,10 +213,6 @@ module.exports = function(opts = {}) {
comments: false comments: false
} }
), ),
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
filename: 'vendor.[chunkhash:8].js'
}),
new ExtractTextPlugin('[name].[chunkhash:8].css'), new ExtractTextPlugin('[name].[chunkhash:8].css'),
new FaviconsWebpackPlugin({ new FaviconsWebpackPlugin({
logo: path.resolve(config.path.assets, 'images/favicon.png'), logo: path.resolve(config.path.assets, 'images/favicon.png'),
@ -234,24 +229,14 @@ module.exports = function(opts = {}) {
); );
} else { } else {
plugins.push( plugins.push(
new AutoDllPlugin({
inject: true, // will inject the DLL bundles to index.html
filename: '[name]_[hash].js',
debug: true,
context: path.join(config.path.root),
entry: {
vendor: [...config.vendorModules, 'babel-polyfill', 'bootstrap-sass', 'font-awesome']
}
}),
new HardSourceWebpackPlugin({ new HardSourceWebpackPlugin({
environmentHash: { environmentHash: {
root: process.cwd(), root: process.cwd(),
directories: ['webpack_config'], directories: ['common/webpack_config'],
files: ['package.json'] files: ['package.json']
} }
}), }),
new webpack.HotModuleReplacementPlugin(), new webpack.HotModuleReplacementPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
new FriendlyErrorsPlugin() new FriendlyErrorsPlugin()
); );
} }
@ -276,6 +261,16 @@ module.exports = function(opts = {}) {
); );
} }
// ====================
// === Optimization ===
// ====================
const optimization = {};
if (options.isProduction) {
optimization.splitChunks = {
chunks: 'all'
};
}
// ==================== // ====================
// ====== DevTool ===== // ====== DevTool =====
// ==================== // ====================
@ -310,6 +305,8 @@ module.exports = function(opts = {}) {
performance: { performance: {
hints: options.isProduction ? 'warning' : false hints: options.isProduction ? 'warning' : false
}, },
optimization,
mode: options.isProduction ? 'production' : 'development',
stats: { stats: {
// Reduce build output // Reduce build output
children: false, children: false,

View File

@ -1,20 +1,19 @@
'use strict'; 'use strict';
const chalk = require('chalk'); const chalk = require('chalk');
// this plugin if for loggin url after each time the compilation is done. const LogPlugin = function(port) {
module.exports = class LogPlugin { this.port = port;
constructor(port) { this.protocol = process.env.HTTPS ? 'https' : 'http';
this.port = port;
}
apply(compiler) {
const protocol = process.env.HTTPS ? 'https' : 'http';
compiler.plugin('done', () => {
console.log(
`> App is running at ${chalk.yellow(
`${protocol}://localhost:${this.port}`
)}\n`
);
});
}
}; };
LogPlugin.prototype.apply = function(compiler) {
compiler.plugin('done', (compiler, done) => {
console.log(
`> App is running at ${chalk.yellow(
`${this.protocol}://localhost:${this.port}`
)}\n`
);
});
};
module.exports = LogPlugin;