git.iko.soy/rowtype-yoga/ry-starter-spa
on main help sign in
Add Hot Module Reload (HMR)
commit740ff3a2aa2a476a8b79fadbc24fe8f856773b51 authorMark Eibes <mark.eibes@gmail.com> dateSat 18 Jul 2020, 21:51 (6 years ago) parentfa15e7b
4 files changed+72−5
index.js+5 package.json+2 webpack.config.js+6−1 yarn.lock+59−4
index.js+5
@@ -1,2 +1,7 @@
11var Main = require("./output/Main");
2+
3+if (module.hot) {
4+ module.hot.accept();
5+}
6+
27Main.main()
package.json+2
@@ -7,9 +7,11 @@
77 "author": "Mark Eibes <mark.eibes@gmail.com>",
88 "license": "MIT",
99 "devDependencies": {
10+ "@pmmmwh/react-refresh-webpack-plugin": "^0.3.3",
1011 "clean-webpack-plugin": "^3.0.0",
1112 "html-webpack-plugin": "^4.3.0",
1213 "purescript": "^0.13.8",
14+ "react-refresh": "^0.8.3",
1315 "spago": "^0.15.3",
1416 "webpack": "^4.43.0",
1517 "webpack-cli": "^3.3.12",
webpack.config.js+6−1
@@ -2,7 +2,8 @@
22
33const path = require("path");
44const HtmlWebpackPlugin = require("html-webpack-plugin");
5−const { CleanWebpackPlugin } = require('clean-webpack-plugin');
5+const { CleanWebpackPlugin } = require("clean-webpack-plugin");
6+const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin");
67
78module.exports = {
89 mode: "development",
@@ -21,12 +22,16 @@ module.exports = {
2122 title: "PureScript Starter",
2223 template: path.resolve(__dirname, "src", "index.html"),
2324 }),
25+ // This plugin updates React components without losing their state
26+ new ReactRefreshWebpackPlugin(),
2427 ],
2528
2629 devServer: {
2730 contentBase: path.join(__dirname, 'dist'),
2831 compress: true,
2932 port: 9000,
33+ hotOnly: true,
34+ hot: true,
3035 },
3136
3237
yarn.lock+59−4
@@ -2,6 +2,18 @@
22# yarn lockfile v1
33
44
5+"@pmmmwh/react-refresh-webpack-plugin@^0.3.3":
6+ version "0.3.3"
7+ resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.3.3.tgz#40a3d674f42a011b7f30a9609aa8fb68ec3c39c9"
8+ integrity sha512-uc6FmPEegAZawSHjUMFQwU7EjaDn7zy1iD/KD/wBROL9F4378OES8MKMYHoRAKT61Fk7LxVKZSDR5VespMQiqw==
9+ dependencies:
10+ ansi-html "^0.0.7"
11+ error-stack-parser "^2.0.6"
12+ html-entities "^1.2.1"
13+ lodash.debounce "^4.0.8"
14+ native-url "^0.2.6"
15+ schema-utils "^2.6.5"
16+
517"@types/anymatch@*":
618 version "1.3.1"
719 resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
@@ -20,6 +32,11 @@
2032 resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#551a4589b6ee2cc9c1dff08056128aec29b94880"
2133 integrity sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA==
2234
35+"@types/json-schema@^7.0.4":
36+ version "7.0.5"
37+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
38+ integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==
39+
2340"@types/minimatch@*":
2441 version "3.0.3"
2542 resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
@@ -246,7 +263,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
246263 resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.1.tgz#b83ca89c5d42d69031f424cad49aada0236c6957"
247264 integrity sha512-KWcq3xN8fDjSB+IMoh2VaXVhRI0BBGxoYp3rx7Pkb6z0cFjYR9Q9l4yZqqals0/zsioCmocC5H6UvsGD4MoIBA==
248265
249−ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5:
266+ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5:
250267 version "6.12.3"
251268 resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706"
252269 integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==
@@ -266,7 +283,7 @@ ansi-escapes@^3.2.0:
266283 resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
267284 integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
268285
269−ansi-html@0.0.7:
286+ansi-html@0.0.7, ansi-html@^0.0.7:
270287 version "0.0.7"
271288 resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
272289 integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
@@ -1392,6 +1409,13 @@ errno@^0.1.3, errno@~0.1.7:
13921409 dependencies:
13931410 prr "~1.0.1"
13941411
1412+error-stack-parser@^2.0.6:
1413+ version "2.0.6"
1414+ resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8"
1415+ integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==
1416+ dependencies:
1417+ stackframe "^1.1.1"
1418+
13951419es-abstract@^1.17.0-next.1, es-abstract@^1.17.5:
13961420 version "1.17.6"
13971421 resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a"
@@ -2022,7 +2046,7 @@ hpack.js@^2.1.6:
20222046 readable-stream "^2.0.1"
20232047 wbuf "^1.1.0"
20242048
2025−html-entities@^1.3.1:
2049+html-entities@^1.2.1, html-entities@^1.3.1:
20262050 version "1.3.1"
20272051 resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44"
20282052 integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==
@@ -2566,6 +2590,11 @@ locate-path@^3.0.0:
25662590 p-locate "^3.0.0"
25672591 path-exists "^3.0.0"
25682592
2593+lodash.debounce@^4.0.8:
2594+ version "4.0.8"
2595+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
2596+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
2597+
25692598lodash@^4.17.11, lodash@^4.17.14:
25702599 version "4.17.19"
25712600 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
@@ -2872,6 +2901,13 @@ nanomatch@^1.2.9:
28722901 snapdragon "^0.8.1"
28732902 to-regex "^3.0.1"
28742903
2904+native-url@^0.2.6:
2905+ version "0.2.6"
2906+ resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae"
2907+ integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==
2908+ dependencies:
2909+ querystring "^0.2.0"
2910+
28752911negotiator@0.6.2:
28762912 version "0.6.2"
28772913 resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
@@ -3440,7 +3476,7 @@ querystring-es3@^0.2.0:
34403476 resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
34413477 integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
34423478
3443−querystring@0.2.0:
3479+querystring@0.2.0, querystring@^0.2.0:
34443480 version "0.2.0"
34453481 resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
34463482 integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
@@ -3495,6 +3531,11 @@ react-is@^16.8.1:
34953531 resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
34963532 integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
34973533
3534+react-refresh@^0.8.3:
3535+ version "0.8.3"
3536+ resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f"
3537+ integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==
3538+
34983539react@^16.13.1:
34993540 version "16.13.1"
35003541 resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e"
@@ -3734,6 +3775,15 @@ schema-utils@^1.0.0:
37343775 ajv-errors "^1.0.0"
37353776 ajv-keywords "^3.1.0"
37363777
3778+schema-utils@^2.6.5:
3779+ version "2.7.0"
3780+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
3781+ integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
3782+ dependencies:
3783+ "@types/json-schema" "^7.0.4"
3784+ ajv "^6.12.2"
3785+ ajv-keywords "^3.4.1"
3786+
37373787select-hose@^2.0.0:
37383788 version "2.0.0"
37393789 resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
@@ -4027,6 +4077,11 @@ ssri@^6.0.1:
40274077 dependencies:
40284078 figgy-pudding "^3.5.1"
40294079
4080+stackframe@^1.1.1:
4081+ version "1.2.0"
4082+ resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303"
4083+ integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==
4084+
40304085static-extend@^0.1.1:
40314086 version "0.1.2"
40324087 resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"