Skip to content

Commit e1d54af

Browse files
authored
Add bundling script for layers and optimizers using Rollup (#939)
1 parent 3b9c16b commit e1d54af

File tree

3 files changed

+184
-2
lines changed

3 files changed

+184
-2
lines changed

bundle_index.js

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import fs from 'fs'
2+
import ts from 'typescript'
3+
import { rollup } from 'rollup'
4+
5+
const bundleLayers = await rollup({
6+
external: [/lib\/model\/nns\/layer\/base.js/, /lib\/model\/[^/]+.js/, /lib\/util/, /node_modules/],
7+
input: 'lib/model/nns/layer/index.js',
8+
})
9+
await bundleLayers.write({ format: 'esm', file: './lib/model/nns/layer/index.js' })
10+
const layerDir = './lib/model/nns/layer'
11+
const files = await fs.promises.readdir(layerDir)
12+
for (const file of files) {
13+
if (file === 'base.js' || file === 'index.js') {
14+
continue
15+
}
16+
const text = (await fs.promises.readFile(`${layerDir}/${file}`)).toString()
17+
const source = ts.createSourceFile(`${layerDir}/${file}`, text, ts.ScriptTarget.Latest)
18+
let className = null
19+
source.forEachChild(node => {
20+
if (ts.isClassDeclaration(node) && !className) {
21+
className = node.name.escapedText
22+
}
23+
})
24+
await fs.promises.writeFile(
25+
`${layerDir}/${file}`,
26+
`import { ${className} } from './index.js'\nexport default ${className}`
27+
)
28+
}
29+
30+
const bundleOptimizer = await rollup({
31+
external: [/lib\/util/, /node_modules/],
32+
input: 'lib/model/nns/optimizer.js',
33+
})
34+
await bundleOptimizer.write({ format: 'esm', file: './lib/model/nns/optimizer.js' })
35+
36+
const bundleONNXLayer = await rollup({
37+
external: [/lib\/model\/nns\/onnx\/[^/]+.js/, /lib\/util/, /node_modules/],
38+
input: 'lib/model/nns/onnx/layer/index.js',
39+
})
40+
await bundleONNXLayer.write({ format: 'esm', file: './lib/model/nns/onnx/layer/index.js' })
41+
42+
const bundleONNXOperator = await rollup({
43+
external: [/lib\/model\/nns\/onnx\/[^/]+.js/, /lib\/util/, /node_modules/],
44+
input: 'lib/model/nns/onnx/operators/index.js',
45+
})
46+
await bundleONNXOperator.write({ format: 'esm', file: './lib/model/nns/onnx/operators/index.js' })

package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@
2323
"test:gui": "NODE_OPTIONS=--experimental-vm-modules npx jest --testMatch '**/gui/**/?(*.)+(spec|test).[jt]s?(x)' --coveragePathIgnorePatterns '/node_modules/' 'onnx/onnx_pb.js' --reporters default ./tests/retry-test.js ./tests/slow-test.js ./tests/gui-coverage-reporter.js --testTimeout=20000 --maxWorkers=100% --workerIdleMemoryLimit=100MB",
2424
"types": "npm run create-entry && find lib -name \\*.d.ts -delete && tsc ./lib/**.js ./lib/**/*.js --declaration --allowJs --emitDeclarationOnly",
2525
"document": "npm run types && typedoc --skipErrorChecking ./lib/**.d.ts",
26+
"bundle": "node ./bundle_index.js",
2627
"minify": "npx esbuild `find . -name \\*.js | grep -E '^./(lib|js)'` ./css/*.css --minify --allow-overwrite --keep-names --outdir=. && html-minifier --collapse-whitespace --minify-css true --minify-js true -o ./index.html ./index.html",
27-
"build:gh-pages": "npm run document && find lib -name \\*.d.ts -delete && sed -i -e /^doc/d .gitignore && npm run minify",
28+
"build:gh-pages": "npm run document && find lib -name \\*.d.ts -delete && sed -i -e /^doc/d .gitignore && npm run bundle && npm run minify",
2829
"build:npm": "npm run types && npm run format"
2930
},
3031
"repository": {
@@ -67,6 +68,7 @@
6768
"onnxruntime-web": "^1.21.0",
6869
"playwright": "^1.44.0",
6970
"prettier": "^3.2.5",
71+
"rollup": "^4.37.0",
7072
"typedoc": "^0.27.6",
7173
"typescript": "^5.4.5",
7274
"v8-to-istanbul": "^9.2.0"

yarn.lock

+135-1
Original file line numberDiff line numberDiff line change
@@ -804,6 +804,106 @@
804804
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
805805
integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
806806

807+
808+
version "4.37.0"
809+
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.37.0.tgz#9bedc746a97fe707154086365f269ced92ff4aa9"
810+
integrity sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==
811+
812+
813+
version "4.37.0"
814+
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.37.0.tgz#6edc6ffc8af8773e4bc28c72894dd5e846b8ee6c"
815+
integrity sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==
816+
817+
818+
version "4.37.0"
819+
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.37.0.tgz#737a7b8be9ff79bd24a7efaae0903e8c66ac0676"
820+
integrity sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==
821+
822+
823+
version "4.37.0"
824+
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.37.0.tgz#a6a697bb685ca9462a7caeea5f22f6a686acff1f"
825+
integrity sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==
826+
827+
828+
version "4.37.0"
829+
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.37.0.tgz#18113e8e133ccb6de4b9dc9d3e09f7acff344cb7"
830+
integrity sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==
831+
832+
833+
version "4.37.0"
834+
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.37.0.tgz#5e56ffd4a0d7ccfcbc86867c40b8f0e6a2c0c81e"
835+
integrity sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==
836+
837+
838+
version "4.37.0"
839+
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.37.0.tgz#5addf1a51e1495ae7ff28d26442a88adf629c980"
840+
integrity sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==
841+
842+
843+
version "4.37.0"
844+
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.37.0.tgz#00cddb9ab51086c5f2cd33cd4738259e24be4e73"
845+
integrity sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==
846+
847+
848+
version "4.37.0"
849+
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.37.0.tgz#c3b4324496236b6fd9f31fda5701c6d6060b1512"
850+
integrity sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==
851+
852+
853+
version "4.37.0"
854+
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.37.0.tgz#b5222180bb1a50e6e9bc8263efd771c1ce770b6f"
855+
integrity sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==
856+
857+
858+
version "4.37.0"
859+
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.37.0.tgz#5660181c1c1efb7b19c7a531d496e685236c5ce7"
860+
integrity sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==
861+
862+
863+
version "4.37.0"
864+
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.37.0.tgz#8273166495d2f5d3fbc556cf42a5a6e24b78bdab"
865+
integrity sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==
866+
867+
868+
version "4.37.0"
869+
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.37.0.tgz#9677e39288ccc91ebcd707cdd794732d701cd174"
870+
integrity sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==
871+
872+
873+
version "4.37.0"
874+
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.37.0.tgz#71cc5ca7be1ed263357618bfe4f8f50c09725a7e"
875+
integrity sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==
876+
877+
878+
version "4.37.0"
879+
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.37.0.tgz#6b0b7df33eb32b0ee7423898b183acc1b5fee33e"
880+
integrity sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==
881+
882+
883+
version "4.37.0"
884+
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.37.0.tgz#52c27717d3c4819d13b5ebc2373ddea099d2e71b"
885+
integrity sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==
886+
887+
888+
version "4.37.0"
889+
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.37.0.tgz#c134a22d30642345de8b799c816345674bf68019"
890+
integrity sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==
891+
892+
893+
version "4.37.0"
894+
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.37.0.tgz#8063d5f8195dd1845e056d069366fbe06a424d09"
895+
integrity sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==
896+
897+
898+
version "4.37.0"
899+
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.37.0.tgz#891d90e3b5517f9d290bb416afdfe2ebfb12139e"
900+
integrity sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==
901+
902+
903+
version "4.37.0"
904+
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.37.0.tgz#a54d7304c3bd45573d8bcd1270de89771f8195fe"
905+
integrity sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==
906+
807907
"@shikijs/engine-oniguruma@^1.27.2":
808908
version "1.29.2"
809909
resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz#d879717ced61d44e78feab16f701f6edd75434f1"
@@ -890,6 +990,11 @@
890990
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz"
891991
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
892992

993+
994+
version "1.0.6"
995+
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
996+
integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
997+
893998
"@types/graceful-fs@^4.1.3":
894999
version "4.1.9"
8951000
resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz"
@@ -1731,7 +1836,7 @@ [email protected]:
17311836
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
17321837
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
17331838

1734-
fsevents@^2.3.2:
1839+
fsevents@^2.3.2, fsevents@~2.3.2:
17351840
version "2.3.3"
17361841
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
17371842
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
@@ -2909,6 +3014,35 @@ reusify@^1.0.4:
29093014
resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
29103015
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
29113016

3017+
rollup@^4.37.0:
3018+
version "4.37.0"
3019+
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.37.0.tgz#e4172f8bdb6ea7df08a1b0acf99abeccb2250378"
3020+
integrity sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==
3021+
dependencies:
3022+
"@types/estree" "1.0.6"
3023+
optionalDependencies:
3024+
"@rollup/rollup-android-arm-eabi" "4.37.0"
3025+
"@rollup/rollup-android-arm64" "4.37.0"
3026+
"@rollup/rollup-darwin-arm64" "4.37.0"
3027+
"@rollup/rollup-darwin-x64" "4.37.0"
3028+
"@rollup/rollup-freebsd-arm64" "4.37.0"
3029+
"@rollup/rollup-freebsd-x64" "4.37.0"
3030+
"@rollup/rollup-linux-arm-gnueabihf" "4.37.0"
3031+
"@rollup/rollup-linux-arm-musleabihf" "4.37.0"
3032+
"@rollup/rollup-linux-arm64-gnu" "4.37.0"
3033+
"@rollup/rollup-linux-arm64-musl" "4.37.0"
3034+
"@rollup/rollup-linux-loongarch64-gnu" "4.37.0"
3035+
"@rollup/rollup-linux-powerpc64le-gnu" "4.37.0"
3036+
"@rollup/rollup-linux-riscv64-gnu" "4.37.0"
3037+
"@rollup/rollup-linux-riscv64-musl" "4.37.0"
3038+
"@rollup/rollup-linux-s390x-gnu" "4.37.0"
3039+
"@rollup/rollup-linux-x64-gnu" "4.37.0"
3040+
"@rollup/rollup-linux-x64-musl" "4.37.0"
3041+
"@rollup/rollup-win32-arm64-msvc" "4.37.0"
3042+
"@rollup/rollup-win32-ia32-msvc" "4.37.0"
3043+
"@rollup/rollup-win32-x64-msvc" "4.37.0"
3044+
fsevents "~2.3.2"
3045+
29123046
run-parallel@^1.1.9:
29133047
version "1.2.0"
29143048
resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"

0 commit comments

Comments
 (0)