Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add {set_exports} script for {ergo-lib-wasm} #637

Merged
merged 1 commit into from Oct 6, 2022

Conversation

mkermani144
Copy link
Contributor

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:
rustwasm/wasm-pack#1061

Closes #632.

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:
rustwasm/wasm-pack#1061
@coveralls
Copy link

Pull Request Test Coverage Report for Build 3171835444

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • 17 unchanged lines in 5 files lost coverage.
  • Overall coverage decreased (-0.03%) to 88.52%

Files with Coverage Reduction New Missed Lines %
ergo-p2p/src/peer_info.rs 1 68.42%
ergo-lib/src/wallet/tx_builder.rs 2 90.26%
ergotree-interpreter/src/eval/sheader.rs 2 97.58%
ergo-p2p/src/peer_spec.rs 6 82.61%
ergotree-ir/src/serialization/types.rs 6 83.74%
Totals Coverage Status
Change from base Build 3013854837: -0.03%
Covered Lines: 15800
Relevant Lines: 17849

💛 - Coveralls

@greenhat
Copy link
Member

greenhat commented Oct 4, 2022

Thank you! Any chance these changes brake anyone's browser workflow?

@mkermani144
Copy link
Contributor Author

I'm not sure, as it depends on the package resolution of build tool used. If there is a build tool which doesn't support exports field, this becomes a breaking change. But as far as I know, the exports field is supported in the well known build tools and we shouldn't count this as a breaking change.
In addition, if someone uses old versions of Node (~v12 or older, I think), this should be counted as breaking change, too.

Copy link
Member

@greenhat greenhat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking great! Thank you!

@greenhat greenhat merged commit 7f44ece into ergoplatform:develop Oct 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Issue running ergo-lib-wasm-browser in Node environments
3 participants