From e0090de54925618b227abdda63b0ea5cbdd821a8 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 4 Mar 2018 12:02:35 -0500 Subject: [PATCH] update to webpack 4 --- .gitignore | 1 + package.json | 4 ++-- webpack/client.config.js | 41 +++++++------------------------- webpack/server.config.js | 8 ++++++- webpack/service-worker.config.js | 14 +++-------- 5 files changed, 21 insertions(+), 47 deletions(-) diff --git a/.gitignore b/.gitignore index a92a219..216e636 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ yarn.lock cypress/screenshots templates/.* export +build app/manifest \ No newline at end of file diff --git a/package.json b/package.json index f81c911..b7b1694 100644 --- a/package.json +++ b/package.json @@ -23,9 +23,9 @@ "sapper": "^0.7.0", "serve-static": "^1.13.1", "style-loader": "^0.20.1", - "svelte": "^1.51.1", + "svelte": "^1.56.0", "svelte-loader": "^2.3.3", "uglifyjs-webpack-plugin": "^1.1.5", - "webpack": "^3.10.0" + "webpack": "^4.1.0" } } diff --git a/webpack/client.config.js b/webpack/client.config.js index 4c3489c..04d287b 100644 --- a/webpack/client.config.js +++ b/webpack/client.config.js @@ -1,15 +1,15 @@ const webpack = require('webpack'); const config = require('sapper/webpack/config.js'); -const ExtractTextPlugin = require('extract-text-webpack-plugin'); const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); -const isDev = config.dev; +const mode = process.env.NODE_ENV; +const isDev = mode === 'development'; module.exports = { entry: config.client.entry(), output: config.client.output(), resolve: { - extensions: ['.js', '.html'] + extensions: ['.js', '.json', '.html'] }, module: { rules: [ @@ -20,41 +20,16 @@ module.exports = { loader: 'svelte-loader', options: { hydratable: true, - emitCss: !isDev, cascade: false, - store: true, - hotReload: true + store: true } } - }, - isDev && { - test: /\.css$/, - use: [ - { loader: 'style-loader' }, - { loader: 'css-loader' } - ] - }, - !isDev && { - test: /\.css$/, - use: ExtractTextPlugin.extract({ - fallback: 'style-loader', - use: [{ loader: 'css-loader', options: { sourceMap:isDev } }] - }) } - ].filter(Boolean) + ] }, + mode, plugins: [ - new webpack.optimize.CommonsChunkPlugin({ - minChunks: 2, - async: false, - children: true - }) - ].concat(isDev ? [ - new webpack.HotModuleReplacementPlugin() - ] : [ - new ExtractTextPlugin('main.css'), - new webpack.optimize.ModuleConcatenationPlugin(), - new UglifyJSPlugin() - ]).filter(Boolean), + isDev && new webpack.HotModuleReplacementPlugin() + ].filter(Boolean), devtool: isDev && 'inline-source-map' }; diff --git a/webpack/server.config.js b/webpack/server.config.js index cde81b6..868d876 100644 --- a/webpack/server.config.js +++ b/webpack/server.config.js @@ -2,14 +2,16 @@ const config = require('sapper/webpack/config.js'); const webpack = require('webpack'); const ExtractTextPlugin = require("extract-text-webpack-plugin"); const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); +const pkg = require('../package.json'); module.exports = { entry: config.server.entry(), output: config.server.output(), target: 'node', resolve: { - extensions: ['.js', '.html', '.json'] + extensions: ['.js', '.json', '.html'] }, + externals: Object.keys(pkg.dependencies), module: { rules: [ { @@ -26,5 +28,9 @@ module.exports = { } } ] + }, + mode: process.env.NODE_ENV, + performance: { + hints: false // it doesn't matter if server.js is large } }; \ No newline at end of file diff --git a/webpack/service-worker.config.js b/webpack/service-worker.config.js index d29ca30..43e8510 100644 --- a/webpack/service-worker.config.js +++ b/webpack/service-worker.config.js @@ -3,15 +3,7 @@ const config = require('sapper/webpack/config.js'); const webpack = require('webpack'); module.exports = { - entry: { - 'service-worker': './app/service-worker.js' - }, - output: { - path: path.resolve(`.sapper`), - filename: '[name].js', - chunkFilename: '[name].[id].[hash].js' - }, - plugins: [ - !config.dev && new webpack.optimize.ModuleConcatenationPlugin() - ].filter(Boolean) + entry: config.serviceworker.entry(), + output: config.serviceworker.output(), + mode: process.env.NODE_ENV }; \ No newline at end of file