Skip to content

Commit 81fbf95

Browse files
committed
JS bundle optimization
1 parent 8e46104 commit 81fbf95

File tree

9 files changed

+143
-5
lines changed

9 files changed

+143
-5
lines changed

.github/workflows/sitespeedio.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
name: sitespeedio
2+
on: [push]
3+
jobs:
4+
build:
5+
runs-on: ubuntu-latest
6+
steps:
7+
- name: checkout
8+
uses: actions/checkout@v4
9+
- name: run sitespeed.io
10+
run: docker run -v "$(pwd):/sitespeed.io" sitespeedio/sitespeed.io https://18ee-95-91-241-147.ngrok-free.app/ -n 1 --budget.configPath homeBudget.json

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,5 @@ package-lock.json
5555

5656
#sitemap
5757
/public/sitemap.xml.gz
58+
59+
sitespeed-result
329 KB
Loading

bundle-analyzer-start.png

347 KB
Loading

config/webpack/development.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,13 @@ const config = environment.toWebpackConfig();
44
// For more information, see https://webpack.js.org/configuration/devtool/#devtool
55
config.devtool = 'eval-source-map';
66

7+
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
8+
environment.plugins.append(
9+
'BundleAnalyzer',
10+
new BundleAnalyzerPlugin({
11+
analyzerMode: 'static',
12+
// openAnalyzer: true,
13+
}),
14+
);
15+
716
module.exports = config;

config/webpack/environment.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,17 @@ environment.plugins.append(
1616
'CommonsChunkVendor',
1717
new webpack.optimize.CommonsChunkPlugin({
1818
name: 'vendor',
19-
minChunks: (module) => {
19+
minChunks: module => {
2020
// this assumes your vendor imports exist in the node_modules directory
21-
return module.context && module.context.indexOf('node_modules') !== -1
22-
}
23-
})
24-
)
21+
return (
22+
module.context &&
23+
module.context.indexOf('node_modules') !== -1 &&
24+
module.context.indexOf('chart.js') === -1 &&
25+
module.context.indexOf('moment') === -1
26+
);
27+
},
28+
}),
29+
);
2530

2631
environment.plugins.append(
2732
'CommonsChunkManifest',

homeBudget.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"budget": {
3+
"transferSize": {
4+
"javascript": 490000
5+
}
6+
}
7+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282
"preact-render-spy": "^1.3.0",
8383
"preact-render-to-json": "^3.6.6",
8484
"prettier": "^1.16.4",
85+
"webpack-bundle-analyzer": "^4.10.2",
8586
"webpack-dev-server": "^2.11.3"
8687
},
8788
"dependencies": {

yarn.lock

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,11 @@
118118
lodash "^4.17.10"
119119
to-fast-properties "^2.0.0"
120120

121+
"@discoveryjs/[email protected]":
122+
version "0.5.7"
123+
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
124+
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
125+
121126
"@emotion/cache@^10.0.9":
122127
version "10.0.9"
123128
resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.9.tgz#e0c7b7a289f7530edcfad4dcf3858bd2e5700a6f"
@@ -219,6 +224,11 @@
219224
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.2.tgz#63985d3d8b02530e0869962f4da09142ee8e200e"
220225
integrity sha512-n/VQ4mbfr81aqkx/XmVicOLjviMuy02eenSdJY33SVA7S2J42EU0P1H0mOogfYedb3wXA0d/LVtBrgTSm04WEA==
221226

227+
"@polka/url@^1.0.0-next.24":
228+
version "1.0.0-next.25"
229+
resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817"
230+
integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==
231+
222232
"@rails/webpacker@^3.5.5":
223233
version "3.5.5"
224234
resolved "https://registry.yarnpkg.com/@rails/webpacker/-/webpacker-3.5.5.tgz#8911c66bcefc8bc6b91270e92f0d39e3c2d43116"
@@ -665,6 +675,11 @@ acorn-walk@^6.0.1:
665675
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913"
666676
integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==
667677

678+
acorn-walk@^8.0.0:
679+
version "8.3.2"
680+
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa"
681+
integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==
682+
668683
acorn@^4.0.3:
669684
version "4.0.13"
670685
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
@@ -680,6 +695,11 @@ acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.7:
680695
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818"
681696
integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw==
682697

698+
acorn@^8.0.4:
699+
version "8.11.3"
700+
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
701+
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
702+
683703
[email protected], address@^1.0.1:
684704
version "1.0.3"
685705
resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9"
@@ -2964,6 +2984,11 @@ commander@^2.11.0, commander@^2.14.1, commander@^2.15.0, commander@^2.19.0, comm
29642984
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
29652985
integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
29662986

2987+
commander@^7.2.0:
2988+
version "7.2.0"
2989+
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
2990+
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
2991+
29672992
commander@~2.13.0:
29682993
version "2.13.0"
29692994
resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
@@ -3448,6 +3473,11 @@ date-now@^0.1.4:
34483473
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
34493474
integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
34503475

3476+
debounce@^1.2.1:
3477+
version "1.2.1"
3478+
resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
3479+
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
3480+
34513481
[email protected], debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
34523482
version "2.6.9"
34533483
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -3777,6 +3807,11 @@ duplexer@^0.1.1:
37773807
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
37783808
integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
37793809

3810+
duplexer@^0.1.2:
3811+
version "0.1.2"
3812+
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
3813+
integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
3814+
37803815
duplexify@^3.4.2, duplexify@^3.6.0:
37813816
version "3.6.1"
37823817
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125"
@@ -4008,6 +4043,11 @@ [email protected], escape-string-regexp@^1.0.2, escape-string-regexp@^1
40084043
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
40094044
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
40104045

4046+
escape-string-regexp@^4.0.0:
4047+
version "4.0.0"
4048+
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
4049+
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
4050+
40114051
escodegen@^1.11.0, escodegen@^1.9.1:
40124052
version "1.11.0"
40134053
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589"
@@ -5115,6 +5155,13 @@ [email protected]:
51155155
dependencies:
51165156
duplexer "^0.1.1"
51175157

5158+
gzip-size@^6.0.0:
5159+
version "6.0.0"
5160+
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
5161+
integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==
5162+
dependencies:
5163+
duplexer "^0.1.2"
5164+
51185165
handle-thing@^1.2.5:
51195166
version "1.2.5"
51205167
resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
@@ -5333,6 +5380,11 @@ html-entities@^1.2.0:
53335380
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
53345381
integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
53355382

5383+
html-escaper@^2.0.2:
5384+
version "2.0.2"
5385+
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
5386+
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
5387+
53365388
html-loader@^0.5.5:
53375389
version "0.5.5"
53385390
resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea"
@@ -7474,6 +7526,11 @@ move-concurrently@^1.0.1:
74747526
rimraf "^2.5.4"
74757527
run-queue "^1.0.3"
74767528

7529+
mrmime@^2.0.0:
7530+
version "2.0.0"
7531+
resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4"
7532+
integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==
7533+
74777534
74787535
version "2.0.0"
74797536
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -7948,6 +8005,11 @@ onetime@^2.0.0:
79488005
dependencies:
79498006
mimic-fn "^1.0.0"
79508007

8008+
opener@^1.5.2:
8009+
version "1.5.2"
8010+
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
8011+
integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
8012+
79518013
79528014
version "5.2.0"
79538015
resolved "https://registry.yarnpkg.com/opn/-/opn-5.2.0.tgz#71fdf934d6827d676cecbea1531f95d354641225"
@@ -8274,6 +8336,11 @@ performance-now@^2.1.0:
82748336
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
82758337
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
82768338

8339+
picocolors@^1.0.0:
8340+
version "1.0.1"
8341+
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
8342+
integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==
8343+
82778344
pify@^2.0.0, pify@^2.3.0:
82788345
version "2.3.0"
82798346
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -10401,6 +10468,15 @@ simple-swizzle@^0.2.2:
1040110468
dependencies:
1040210469
is-arrayish "^0.3.1"
1040310470

10471+
sirv@^2.0.3:
10472+
version "2.0.4"
10473+
resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0"
10474+
integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==
10475+
dependencies:
10476+
"@polka/url" "^1.0.0-next.24"
10477+
mrmime "^2.0.0"
10478+
totalist "^3.0.0"
10479+
1040410480
sisteransi@^0.1.1:
1040510481
version "0.1.1"
1040610482
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce"
@@ -11097,6 +11173,11 @@ toposort@^2.0.2:
1109711173
resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330"
1109811174
integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=
1109911175

11176+
totalist@^3.0.0:
11177+
version "3.0.1"
11178+
resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8"
11179+
integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==
11180+
1110011181
tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0:
1110111182
version "2.5.0"
1110211183
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
@@ -11547,6 +11628,24 @@ webidl-conversions@^4.0.2:
1154711628
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
1154811629
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
1154911630

11631+
webpack-bundle-analyzer@^4.10.2:
11632+
version "4.10.2"
11633+
resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd"
11634+
integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==
11635+
dependencies:
11636+
"@discoveryjs/json-ext" "0.5.7"
11637+
acorn "^8.0.4"
11638+
acorn-walk "^8.0.0"
11639+
commander "^7.2.0"
11640+
debounce "^1.2.1"
11641+
escape-string-regexp "^4.0.0"
11642+
gzip-size "^6.0.0"
11643+
html-escaper "^2.0.2"
11644+
opener "^1.5.2"
11645+
picocolors "^1.0.0"
11646+
sirv "^2.0.3"
11647+
ws "^7.3.1"
11648+
1155011649
[email protected], webpack-dev-middleware@^1.12.2:
1155111650
version "1.12.2"
1155211651
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
@@ -11814,6 +11913,11 @@ ws@^6.1.2:
1181411913
dependencies:
1181511914
async-limiter "~1.0.0"
1181611915

11916+
ws@^7.3.1:
11917+
version "7.5.9"
11918+
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
11919+
integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
11920+
1181711921
xml-name-validator@^3.0.0:
1181811922
version "3.0.0"
1181911923
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"

0 commit comments

Comments
 (0)