Skip to content

Commit a560d5a

Browse files
committed
Add {set_exports} script for {ergo-lib-wasm}
When {wasm-pack} is run with browser target, it generates a {package.json} in which there is a {module} field, but no {main}, {type} or {exports} field is present. This causes some of the modern tools which run in Node be unable to use the package (Vitest is an example). Although it may seem irrational to use the browser package in Node, but it makes sense when we want to write tests. Many test tools such as Jest and Vitest run in Node. Add a {set_exports} script to be run after {wasm-pack}, updating the generated {package.json} as follows: - Add an {exports} field to enable new Node entry resolution feature - Add {"type": "module"} to indicate that this is an ESM module - Remove {module}, as it's no longer needed {wasm-pack} may fix the issue in the future or new module entry resolution mechanisms may be introduced in the future. Until then, this script will enable the use of the package without getting browser environment related issues when run in Node. Related {wasm-pack} PR: drager/wasm-pack#1061
1 parent 41150b6 commit a560d5a

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

bindings/ergo-lib-wasm/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
"doc": "jsdoc -c jsdoc.json pkg/ergo_wallet_wasm.js README.md -d docs",
1111
"build-nodejs": "rm -rf ./pkg-nodejs && wasm-pack build --target nodejs --out-dir pkg-nodejs && cd pkg-nodejs && node ../scripts/publish_helper -nodejs",
1212
"build-nodejs-alpha": "rm -rf ./pkg-nodejs && wasm-pack build --target nodejs --out-dir pkg-nodejs && cd pkg-nodejs && node ../scripts/publish_helper -nodejs && npm version minor && node ../scripts/set_alpha_version -nodejs $(git rev-parse --short HEAD)",
13-
"build-browser": "rm -rf ./pkg-browser && wasm-pack build --target browser --out-dir pkg-browser --features rest && cd pkg-browser && node ../scripts/publish_helper -browser",
14-
"build-browser-alpha": "rm -rf ./pkg-browser && wasm-pack build --target browser --out-dir pkg-browser --features rest && cd pkg-browser && node ../scripts/publish_helper -browser && npm version minor && node ../scripts/set_alpha_version -browser $(git rev-parse --short HEAD)",
13+
"build-browser": "rm -rf ./pkg-browser && wasm-pack build --target browser --out-dir pkg-browser --features rest && cd pkg-browser && node ../scripts/publish_helper -browser && node ../scripts/set_exports",
14+
"build-browser-alpha": "rm -rf ./pkg-browser && wasm-pack build --target browser --out-dir pkg-browser --features rest && cd pkg-browser && node ../scripts/publish_helper -browser && node ../scripts/set_exports && npm version minor && node ../scripts/set_alpha_version -browser $(git rev-parse --short HEAD)",
1515
"publish-nodejs": "npm run build-nodejs && cd pkg-nodejs && npm publish",
1616
"publish-browser": "npm run build-browser && cd pkg-browser && npm publish"
1717
},
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const fs = require("fs");
2+
3+
// Remove "module" from the generated (old) {package.json}
4+
const {
5+
module: unusedModule,
6+
...oldPackageJson
7+
} = require(`../pkg-browser/package.json`);
8+
9+
const newPackageJson = {
10+
...oldPackageJson,
11+
type: "module",
12+
exports: {
13+
".": "./ergo_lib_wasm",
14+
},
15+
};
16+
17+
console.log(newPackageJson);
18+
19+
fs.writeFileSync("./package.json", JSON.stringify(newPackageJson, null, 2));

0 commit comments

Comments
 (0)