Skip to content
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commit 8fe7996

Browse files
committed
test Preact shrink build size 828 KB(before) to 704 KB(after)
1 parent d75bd49 commit 8fe7996

File tree

4 files changed

+80
-10
lines changed

4 files changed

+80
-10
lines changed

next.config.js

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,26 @@
1-
exports.exportPathMap = () => ({
2-
'/': { page: '/' },
3-
'/home/i': { page: '/', query: { name: 'index' } },
4-
'/home/feature': { page: '/', query: { name: 'feature' } },
5-
'/home/theme': { page: '/', query: { name: 'theme' } },
6-
'/home/i18n': { page: '/', query: { name: 'i18n' } },
7-
'/home/example': { page: '/', query: { name: 'example' } },
8-
'/shop': { page: '/shop' },
9-
})
1+
module.exports = {
2+
exportPathMap: () => ({
3+
'/': { page: '/' },
4+
'/home/i': { page: '/', query: { name: 'index' } },
5+
'/home/feature': { page: '/', query: { name: 'feature' } },
6+
'/home/theme': { page: '/', query: { name: 'theme' } },
7+
'/home/i18n': { page: '/', query: { name: 'i18n' } },
8+
'/home/example': { page: '/', query: { name: 'example' } },
9+
'/shop': { page: '/shop' },
10+
}),
11+
12+
webpack: (config, { dev }) => {
13+
// For the development version, we'll use React.
14+
// Because, it supports react hot loading and so on.
15+
if (dev) {
16+
return config
17+
}
18+
19+
config.resolve.alias = {
20+
react: 'preact-compat/dist/preact-compat',
21+
'react-dom': 'preact-compat/dist/preact-compat',
22+
}
23+
24+
return config
25+
},
26+
}

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,12 @@
8686
"mobx": "3.2.2",
8787
"mobx-react": "^4.2.2",
8888
"mobx-state-tree": "^1.0.0",
89+
"module-alias": "^2.0.1",
8990
"next": "3.2.2",
9091
"path-match": "^1.2.4",
9192
"polished": "^1.7.0",
93+
"preact": "^8.2.5",
94+
"preact-compat": "^3.17.0",
9295
"prop-types": "^15.5.10",
9396
"ramda": "^0.24.1",
9497
"react": "15.6.2",

server.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ const app = next({ dev })
1313
const handle = app.getRequestHandler()
1414
const route = pathMatch()
1515

16+
const moduleAlias = require('module-alias')
17+
// For the development version, we'll use React.
18+
// Because, it support react hot loading and so on.
19+
if (!dev) {
20+
moduleAlias.addAlias('react', 'preact-compat')
21+
moduleAlias.addAlias('react-dom', 'preact-compat')
22+
}
23+
1624
// const langMatch = route('/lang/:name')
1725
mobxReact.useStaticRendering(true)
1826

yarn.lock

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3003,6 +3003,12 @@ ignore@^3.3.3:
30033003
version "3.3.5"
30043004
resolved "http://r.cnpmjs.org/ignore/download/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6"
30053005

3006+
immutability-helper@^2.1.2:
3007+
version "2.4.0"
3008+
resolved "http://r.cnpmjs.org/immutability-helper/download/immutability-helper-2.4.0.tgz#00d421e2957c17f0f0781475f05ffd837e73458d"
3009+
dependencies:
3010+
invariant "^2.2.0"
3011+
30063012
imurmurhash@^0.1.4:
30073013
version "0.1.4"
30083014
resolved "http://r.cnpmjs.org/imurmurhash/download/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -4212,6 +4218,10 @@ mobx@3.2.2:
42124218
version "3.2.2"
42134219
resolved "http://r.cnpmjs.org/mobx/download/mobx-3.2.2.tgz#aa671459bededfd9880c948889a3f62bce09279c"
42144220

4221+
module-alias@^2.0.1:
4222+
version "2.0.1"
4223+
resolved "http://r.cnpmjs.org/module-alias/download/module-alias-2.0.1.tgz#7562c0fe839f195ac809292624634ba7c453aecb"
4224+
42154225
moment@^2.11.2:
42164226
version "2.18.1"
42174227
resolved "http://r.cnpmjs.org/moment/download/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
@@ -4870,6 +4880,30 @@ postcss-value-parser@^3.3.0:
48704880
version "3.3.0"
48714881
resolved "http://r.cnpmjs.org/postcss-value-parser/download/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
48724882

4883+
preact-compat@^3.17.0:
4884+
version "3.17.0"
4885+
resolved "http://r.cnpmjs.org/preact-compat/download/preact-compat-3.17.0.tgz#528cfdfc301190c1a0f47567336be1f4be0266b3"
4886+
dependencies:
4887+
immutability-helper "^2.1.2"
4888+
preact-render-to-string "^3.6.0"
4889+
preact-transition-group "^1.1.0"
4890+
prop-types "^15.5.8"
4891+
standalone-react-addons-pure-render-mixin "^0.1.1"
4892+
4893+
preact-render-to-string@^3.6.0:
4894+
version "3.6.3"
4895+
resolved "http://r.cnpmjs.org/preact-render-to-string/download/preact-render-to-string-3.6.3.tgz#481d0d5bdac9192d3347557437d5cd00aa312043"
4896+
dependencies:
4897+
pretty-format "^3.5.1"
4898+
4899+
preact-transition-group@^1.1.0:
4900+
version "1.1.1"
4901+
resolved "http://r.cnpmjs.org/preact-transition-group/download/preact-transition-group-1.1.1.tgz#f0a49327ea515ece34ea2be864c4a7d29e5d6e10"
4902+
4903+
preact@^8.2.5:
4904+
version "8.2.5"
4905+
resolved "http://r.cnpmjs.org/preact/download/preact-8.2.5.tgz#cbfa3962a8012768159f6d01d46f9c1eb3213c0a"
4906+
48734907
prelude-ls@~1.1.2:
48744908
version "1.1.2"
48754909
resolved "http://r.cnpmjs.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
@@ -4889,6 +4923,10 @@ pretty-format@^21.0.2:
48894923
ansi-regex "^3.0.0"
48904924
ansi-styles "^3.2.0"
48914925

4926+
pretty-format@^3.5.1:
4927+
version "3.8.0"
4928+
resolved "http://r.cnpmjs.org/pretty-format/download/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385"
4929+
48924930
private@^0.1.6, private@^0.1.7:
48934931
version "0.1.7"
48944932
resolved "http://r.cnpmjs.org/private/download/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
@@ -4922,7 +4960,7 @@ prop-types-exact@^1.1.1:
49224960
has "^1.0.1"
49234961
object.assign "^4.0.4"
49244962

4925-
prop-types@15.5.10, prop-types@^15.5.10, prop-types@^15.5.4:
4963+
prop-types@15.5.10, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8:
49264964
version "15.5.10"
49274965
resolved "http://r.cnpmjs.org/prop-types/download/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154"
49284966
dependencies:
@@ -5620,6 +5658,10 @@ staged-git-files@0.0.4:
56205658
version "0.0.4"
56215659
resolved "http://r.cnpmjs.org/staged-git-files/download/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35"
56225660

5661+
standalone-react-addons-pure-render-mixin@^0.1.1:
5662+
version "0.1.1"
5663+
resolved "http://r.cnpmjs.org/standalone-react-addons-pure-render-mixin/download/standalone-react-addons-pure-render-mixin-0.1.1.tgz#3c7409f4c79c40de9ac72c616cf679a994f37551"
5664+
56235665
"statuses@>= 1.2.1 < 2", "statuses@>= 1.3.1 < 2", statuses@~1.3.1:
56245666
version "1.3.1"
56255667
resolved "http://r.cnpmjs.org/statuses/download/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"

0 commit comments

Comments
 (0)