Skip to content

Commit a427154

Browse files
[ALTA-81] 🔄 (Webpack) Add react-refresh for persistent component state across hot reloads! (#9)
1 parent 990cf27 commit a427154

File tree

4 files changed

+74
-1
lines changed

4 files changed

+74
-1
lines changed

‎internals/webpack/webpack.base.babel.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,13 @@ module.exports = options => ({
2525
exclude: /node_modules/,
2626
use: {
2727
loader: 'babel-loader',
28-
options: options.babelQuery,
28+
options: {
29+
...options.babelQuery,
30+
// DO NOT apply the Babel plugin in production mode!
31+
plugins: [
32+
options.mode === 'development' && require.resolve('react-refresh/babel'),
33+
].filter(Boolean),
34+
},
2935
},
3036
},
3137
{

‎internals/webpack/webpack.dev.babel.js

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const path = require('path')
66
const webpack = require('webpack')
77
const HtmlWebpackPlugin = require('html-webpack-plugin')
88
const CircularDependencyPlugin = require('circular-dependency-plugin')
9+
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin')
910

1011
module.exports = require('./webpack.base.babel')({
1112
mode: 'development',
@@ -31,6 +32,7 @@ module.exports = require('./webpack.base.babel')({
3132

3233
// Add development plugins
3334
plugins: [
35+
new ReactRefreshWebpackPlugin(),
3436
new webpack.HotModuleReplacementPlugin(), // Tell webpack we want hot reloading
3537
new HtmlWebpackPlugin({
3638
inject: true, // Inject all files that are generated by webpack, e.g. bundle.js

‎package-lock.json

+63
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

+2
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@
160160
"@babel/preset-react": "7.10.4",
161161
"@babel/register": "7.10.5",
162162
"@cypress/code-coverage": "^3.8.1",
163+
"@pmmmwh/react-refresh-webpack-plugin": "^0.4.1",
163164
"@testing-library/cypress": "^6.0.0",
164165
"@testing-library/jest-dom": "^5.11.1",
165166
"@testing-library/react": "^10.4.0",
@@ -211,6 +212,7 @@
211212
"prettier": "1.19.1",
212213
"react-app-polyfill": "1.0.6",
213214
"react-desc": "^4.1.2",
215+
"react-refresh": "^0.8.3",
214216
"react-test-renderer": "^16.13.0",
215217
"rimraf": "3.0.2",
216218
"shelljs": "^0.8.3",

0 commit comments

Comments
 (0)