diff --git a/build.ninja b/build.ninja index 8ef233b..8192a8b 100644 --- a/build.ninja +++ b/build.ninja @@ -1,4 +1,4 @@ -wordleOut = ..\\..\\..\\Documents\\website\\wordle-helper\\index.html +wordleOut = dist/index.html minifyOpts = --minify src = src dist = dist @@ -20,6 +20,9 @@ rule calcBundleSize rule esbuild command = node ./node_modules/esbuild/bin/esbuild $minifyOpts --bundle $in --outfile=$out +rule terser + command = node ./node_modules/terser/bin/terser $in --compress unsafe,unsafe_arrows,passes=2 --mangle -o $out + rule gobuilddir command = go build -o $bin/ $goLinkFlags $relative/$in @@ -27,7 +30,9 @@ build $bin/build.exe: gobuilddir cmd/build build $dist/index.css: esbuild $src/index.css -build $dist/index.js: esbuild $src/index.js | $src/compile-guesses.ts $src/common.ts $src/filter-guesses.ts $src/common-dom.ts +build $dist/index-esbuild.js: esbuild $src/index.js | $src/compile-guesses.ts $src/common.ts $src/filter-guesses.ts $src/common-dom.ts + +build $dist/index.js: terser $dist/index-esbuild.js build $dist/make-suggestion-nodes.cjs: esbuild $tools/make-suggestion-nodes.js | $src/common.ts $src/filter-guesses.ts $src/common-dom.ts $src/compile-guesses.ts minifyOpts = --platform=node diff --git a/out/bundle-size.json b/out/bundle-size.json index 93532a1..bbf730e 100644 --- a/out/bundle-size.json +++ b/out/bundle-size.json @@ -1 +1 @@ -{ "gzip": 10172, "parsed": 26209 } +{ "gzip": 10028, "parsed": 25693 } diff --git a/package.json b/package.json index f121977..6a4ef39 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@types/node": "^17.0.21", "esbuild": "^0.14.25", "prettier": "^2.5.1", + "terser": "^5.12.0", "typescript": "^4.6.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cce479c..db08e3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,12 +4,14 @@ specifiers: '@types/node': ^17.0.21 esbuild: ^0.14.25 prettier: ^2.5.1 + terser: ^5.12.0 typescript: ^4.6.2 devDependencies: '@types/node': 17.0.21 esbuild: 0.14.25 prettier: 2.5.1 + terser: 5.12.0 typescript: 4.6.2 packages: @@ -18,6 +20,20 @@ packages: resolution: {integrity: sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==} dev: true + /acorn/8.7.0: + resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + /esbuild-android-64/0.14.25: resolution: {integrity: sha512-L5vCUk7TzFbBnoESNoXjU3x9+/+7TDIE/1mTfy/erAfvZAqC+S3sp/Qa9wkypFMcFvN9FzvESkTlpeQDolREtQ==} engines: {node: '>=12'} @@ -232,6 +248,34 @@ packages: hasBin: true dev: true + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map/0.7.3: + resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} + engines: {node: '>= 8'} + dev: true + + /terser/5.12.0: + resolution: {integrity: sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + acorn: 8.7.0 + commander: 2.20.3 + source-map: 0.7.3 + source-map-support: 0.5.21 + dev: true + /typescript/4.6.2: resolution: {integrity: sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==} engines: {node: '>=4.2.0'} diff --git a/tools/configure.js b/tools/configure.js index 11d49b8..58573cc 100644 --- a/tools/configure.js +++ b/tools/configure.js @@ -40,6 +40,9 @@ rule calcBundleSize rule esbuild command = ${esbuildBinary} $minifyOpts --bundle $in --outfile=$out +rule terser + command = node ./node_modules/terser/bin/terser $in --compress unsafe,unsafe_arrows,passes=2 --mangle -o $out + rule gobuilddir command = go build -o $bin/ $goLinkFlags $relative/$in @@ -47,7 +50,9 @@ build $bin/build${platformExt}: gobuilddir cmd/build build $dist/index.css: esbuild $src/index.css -build $dist/index.js: esbuild $src/index.js | $src/compile-guesses.ts $src/common.ts $src/filter-guesses.ts $src/common-dom.ts +build $dist/index-esbuild.js: esbuild $src/index.js | $src/compile-guesses.ts $src/common.ts $src/filter-guesses.ts $src/common-dom.ts + +build $dist/index.js: terser $dist/index-esbuild.js build $dist/make-suggestion-nodes.cjs: esbuild $tools/make-suggestion-nodes.js | $src/common.ts $src/filter-guesses.ts $src/common-dom.ts $src/compile-guesses.ts minifyOpts = --platform=node