Skip to content

Commit 26e3d7f

Browse files
Update npm package structure
1. Files are now organized as follows to fix ESM imports[^1][^2]: - `dist/*.cjs.js` -> `dist/cjs/*.js` - `dist/*.esm.js` -> `dist/esm/*.js` 2. `dist/{cjs,esm}/**/*.js` are now not bundled with rollup to avoid duplicated bundling. [^1]: UMD files are kept in the root of `dist/` to avoid breaking existing code that loads them from CDN instead of `package.json`'s `exports` field. [^2]: ESM imports were broken with Node.js because files are not suffixed with mjs nor `type: module` is not specified in root `package.json`. Now `dist/esm/package.json` specifies `type: module`.
1 parent 61fa707 commit 26e3d7f

File tree

15 files changed

+125
-174
lines changed

15 files changed

+125
-174
lines changed

packages/npm-packages/ruby-3.2-wasm-wasi/package.json

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,20 @@
22
"name": "@ruby/3.2-wasm-wasi",
33
"version": "2.3.0",
44
"description": "Ruby 3.2 built on WASI",
5-
"main": "./dist/index.cjs.js",
6-
"umd:main": "./dist/index.umd.js",
7-
"module": "./dist/index.esm.js",
8-
"typings": "./dist/index.d.ts",
5+
"main": "./dist/cjs/index.js",
6+
"module": "./dist/esm/index.js",
97
"exports": {
108
".": {
11-
"browser": "./dist/index.esm.js",
12-
"umd": "./dist/index.umd.js",
13-
"import": "./dist/index.esm.js",
14-
"require": "./dist/index.cjs.js",
15-
"types": "./dist/browser.d.ts"
9+
"browser": "./dist/esm/index.js",
10+
"umd": "./dist/umd/index.js",
11+
"import": "./dist/esm/index.js",
12+
"require": "./dist/cjs/index.js"
1613
},
17-
"./dist/browser": {
18-
"browser": "./dist/browser.esm.js",
19-
"umd": "./dist/browser.umd.js",
20-
"import": "./dist/browser.esm.js",
21-
"require": "./dist/browser.cjs.js",
22-
"types": "./dist/browser.d.ts"
23-
},
24-
"./dist/browser.script": {
25-
"browser": "./dist/browser.script.esm.js",
26-
"umd": "./dist/browser.script.umd.js",
27-
"import": "./dist/browser.script.esm.js",
28-
"types": "./dist/browser.script.d.ts"
29-
},
30-
"./dist/node": {
31-
"import": "./dist/node.esm.js",
32-
"require": "./dist/node.cjs.js",
33-
"types": "./dist/node.d.ts"
14+
"./dist/*": {
15+
"browser": "./dist/esm/*.js",
16+
"umd": "./dist/umd/*.js",
17+
"import": "./dist/esm/*.js",
18+
"require": "./dist/cjs/*.js"
3419
}
3520
},
3621
"files": [
@@ -45,7 +30,7 @@
4530
"build:static": "npm run build:static:files && npm run build:static:compat",
4631
"build:wasm": "../ruby-wasm-wasi/tools/pack-ruby-wasm.sh ../../../rubies/3.2-wasm32-unknown-wasi-full-js-debug ./dist",
4732
"build:rollup": "rollup -c rollup.config.mjs",
48-
"build": "npm run build:deps && npm run build:static && npm run build:wasm && npm run build:rollup"
33+
"build": "npm run build:deps && npm run build:static && npm run build:wasm && npm run build:rollup && ../ruby-wasm-wasi/tools/post-build.sh ./dist"
4934
},
5035
"repository": "https://github.com/ruby/ruby.wasm",
5136
"homepage": "https://github.com/ruby/ruby.wasm/tree/main/packages/npm-packages/ruby-3.2-wasm-wasi",

packages/npm-packages/ruby-head-wasm-wasi/package.json

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,20 @@
22
"name": "@ruby/head-wasm-wasi",
33
"version": "2.3.0",
44
"description": "Ruby head built on WASI",
5-
"main": "./dist/index.cjs.js",
6-
"umd:main": "./dist/index.umd.js",
7-
"module": "./dist/index.esm.js",
8-
"typings": "./dist/index.d.ts",
5+
"main": "./dist/cjs/index.js",
6+
"module": "./dist/esm/index.js",
97
"exports": {
108
".": {
11-
"browser": "./dist/index.esm.js",
12-
"umd": "./dist/index.umd.js",
13-
"import": "./dist/index.esm.js",
14-
"require": "./dist/index.cjs.js",
15-
"types": "./dist/browser.d.ts"
9+
"browser": "./dist/esm/index.js",
10+
"umd": "./dist/umd/index.js",
11+
"import": "./dist/esm/index.js",
12+
"require": "./dist/cjs/index.js"
1613
},
17-
"./dist/browser": {
18-
"browser": "./dist/browser.esm.js",
19-
"umd": "./dist/browser.umd.js",
20-
"import": "./dist/browser.esm.js",
21-
"require": "./dist/browser.cjs.js",
22-
"types": "./dist/browser.d.ts"
23-
},
24-
"./dist/browser.script": {
25-
"browser": "./dist/browser.script.esm.js",
26-
"umd": "./dist/browser.script.umd.js",
27-
"import": "./dist/browser.script.esm.js",
28-
"types": "./dist/browser.script.d.ts"
29-
},
30-
"./dist/node": {
31-
"import": "./dist/node.esm.js",
32-
"require": "./dist/node.cjs.js",
33-
"types": "./dist/node.d.ts"
14+
"./dist/*": {
15+
"browser": "./dist/esm/*.js",
16+
"umd": "./dist/umd/*.js",
17+
"import": "./dist/esm/*.js",
18+
"require": "./dist/cjs/*.js"
3419
}
3520
},
3621
"files": [
@@ -45,7 +30,7 @@
4530
"build:static": "npm run build:static:files && npm run build:static:compat",
4631
"build:wasm": "../ruby-wasm-wasi/tools/pack-ruby-wasm.sh ../../../rubies/head-wasm32-unknown-wasi-full-js-debug ./dist",
4732
"build:rollup": "rollup -c rollup.config.mjs",
48-
"build": "npm run build:deps && npm run build:static && npm run build:wasm && npm run build:rollup"
33+
"build": "npm run build:deps && npm run build:static && npm run build:wasm && npm run build:rollup && ../ruby-wasm-wasi/tools/post-build.sh ./dist"
4934
},
5035
"repository": "https://github.com/ruby/ruby.wasm",
5136
"homepage": "https://github.com/ruby/ruby.wasm/tree/main/packages/npm-packages/ruby-head-wasm-wasi",

packages/npm-packages/ruby-wasm-wasi/package.json

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,24 @@
22
"name": "@ruby/wasm-wasi",
33
"version": "2.3.0",
44
"description": "WebAssembly port of CRuby with WASI",
5-
"main": "./dist/index.cjs.js",
6-
"umd:main": "./dist/index.umd.js",
7-
"module": "./dist/index.esm.js",
8-
"typings": "./dist/index.d.ts",
5+
"main": "./dist/cjs/index.js",
6+
"module": "./dist/esm/index.js",
7+
"browser": "./dist/index.umd.js",
8+
"typings": "./dist/esm/index.d.ts",
99
"exports": {
1010
".": {
11-
"browser": "./dist/index.esm.js",
12-
"umd": "./dist/index.umd.js",
13-
"import": "./dist/index.esm.js",
14-
"require": "./dist/index.cjs.js",
15-
"types": "./dist/browser.d.ts"
11+
"browser": "./dist/esm/index.js",
12+
"umd": "./dist/umd/index.js",
13+
"import": "./dist/esm/index.js",
14+
"require": "./dist/cjs/index.js",
15+
"types": "./dist/esm/browser.d.ts"
1616
},
17-
"./dist/browser": {
18-
"browser": "./dist/browser.esm.js",
19-
"umd": "./dist/browser.umd.js",
20-
"import": "./dist/browser.esm.js",
21-
"require": "./dist/browser.cjs.js",
22-
"types": "./dist/browser.d.ts"
23-
},
24-
"./dist/browser.script": {
25-
"browser": "./dist/browser.script.esm.js",
26-
"umd": "./dist/browser.script.umd.js",
27-
"import": "./dist/browser.script.esm.js",
28-
"types": "./dist/browser.script.d.ts"
29-
},
30-
"./dist/node": {
31-
"import": "./dist/node.esm.js",
32-
"require": "./dist/node.cjs.js",
33-
"types": "./dist/node.d.ts"
17+
"./dist/*": {
18+
"browser": "./dist/esm/*.js",
19+
"umd": "./dist/umd/*.js",
20+
"import": "./dist/esm/*.js",
21+
"require": "./dist/cjs/*.js",
22+
"types": "./dist/esm/*.d.ts"
3423
}
3524
},
3625
"files": [
@@ -61,8 +50,9 @@
6150
"serve:example": "bundle exec ruby -run -e httpd ./example -p 8085",
6251
"format": "prettier --write .",
6352
"build:static": "./tools/pack-bindgen-src.sh ./dist",
64-
"build:rollup": "rollup -c rollup.config.mjs && tsc --build",
65-
"build": "npm run build:static && npm run build:rollup"
53+
"build:rollup": "rollup -c rollup.config.mjs",
54+
"build:tsc": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json",
55+
"build": "npm run build:rollup && npm run build:tsc && npm run build:static && ./tools/post-build.sh ./dist"
6656
},
6757
"devDependencies": {
6858
"@babel/core": "^7.19.3",

packages/npm-packages/ruby-wasm-wasi/rollup.config.mjs

Lines changed: 14 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,56 +5,26 @@ import nodePolyfills from "rollup-plugin-polyfill-node";
55

66
const typescriptOptions = { tsconfig: "./tsconfig.json", declaration: false };
77

8-
function variant(basename, { browser = false } = {}) {
8+
function config({ basename }) {
99
return {
1010
input: `src/${basename}.ts`,
11-
output: [
12-
{
13-
file: `dist/${basename}.umd.js`,
14-
format: "umd",
15-
name: "ruby-wasm-wasi",
16-
},
17-
{
18-
file: `dist/${basename}.esm.js`,
19-
format: "es",
20-
name: "ruby-wasm-wasi",
21-
},
22-
{
23-
file: `dist/${basename}.cjs.js`,
24-
format: "cjs",
25-
exports: "named",
26-
},
27-
],
11+
output: {
12+
file: `dist/${basename}.umd.js`,
13+
format: "umd",
14+
name: "ruby-wasm-wasi",
15+
},
2816
plugins: [
29-
...(browser
30-
? [nodePolyfills(), inject({ Buffer: ["buffer", "Buffer"] })]
31-
: []),
17+
nodePolyfills(),
18+
inject({ Buffer: ["buffer", "Buffer"] }),
3219
typescript(typescriptOptions),
33-
nodeResolve(),
34-
],
20+
nodeResolve({ resolveOnly: ["@wasmer/wasi"] })
21+
]
3522
};
3623
}
3724

3825
/** @type {import('rollup').RollupOptions[]} */
3926
export default [
40-
variant("index"),
41-
variant("browser", { browser: true }),
42-
variant("browser.script", { browser: true }),
43-
{
44-
input: `src/node.ts`,
45-
output: [
46-
{
47-
file: `dist/node.esm.js`,
48-
format: "es",
49-
name: "ruby-wasm-wasi",
50-
},
51-
{
52-
file: `dist/node.cjs.js`,
53-
format: "cjs",
54-
exports: "named",
55-
},
56-
],
57-
plugins: [typescript(typescriptOptions), nodeResolve()],
58-
external: ["wasi"],
59-
},
60-
];
27+
{ basename: "browser.script" },
28+
{ basename: "browser" },
29+
{ basename: "index" },
30+
].map(config);

packages/npm-packages/ruby-wasm-wasi/src/browser.script.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { DefaultRubyVM } from "./browser";
1+
import { DefaultRubyVM } from "./browser.js";
22

33
export const main = async (
44
pkg: { name: string; version: string },

packages/npm-packages/ruby-wasm-wasi/src/browser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { init, WASI } from "@wasmer/wasi";
2-
import { RubyVM } from "./index";
2+
import { RubyVM } from "./index.js";
33

44
const consolePrinter = () => {
55
let memory: WebAssembly.Memory | undefined = undefined;

packages/npm-packages/ruby-wasm-wasi/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import * as RbAbi from "./bindgen/rb-abi-guest";
1+
import * as RbAbi from "./bindgen/rb-abi-guest.js";
22
import {
33
RbJsAbiHost,
44
addRbJsAbiHostToImports,
55
JsAbiResult,
66
JsAbiValue,
7-
} from "./bindgen/rb-js-abi-host";
7+
} from "./bindgen/rb-js-abi-host.js";
88

99
/**
1010
* A Ruby VM instance

packages/npm-packages/ruby-wasm-wasi/src/node.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { WASI } from "wasi";
2-
import { RubyVM } from "./index";
2+
import { RubyVM } from "./index.js";
33

44
export const DefaultRubyVM = async (
55
rubyModule: WebAssembly.Module,

packages/npm-packages/ruby-wasm-wasi/test/package.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import fs from "fs/promises";
22
import path from "path";
33
import { WASI } from "wasi";
4-
import { RubyVM } from "../dist/index.umd.js";
5-
import { DefaultRubyVM } from "../src/node";
4+
import { RubyVM } from "../dist/esm/index";
5+
import { DefaultRubyVM } from "../dist/esm/node";
66

77
const initRubyVM = async (rubyModule: WebAssembly.Module, args: string[]) => {
88
const wasi = new WASI();

packages/npm-packages/ruby-wasm-wasi/tools/pack-bindgen-src.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,7 @@ fi
99
package_dir="$(cd "$(dirname "$0")/.." && pwd)"
1010
dist_dir="$1"
1111

12-
mkdir -p "$dist_dir/bindgen"
13-
find "$package_dir/src/bindgen" -name "*.d.ts" -exec cp {} "$dist_dir/bindgen" \;
12+
for format in "esm" "cjs"; do
13+
mkdir -p "$dist_dir/$format/bindgen"
14+
find "$package_dir/src/bindgen" -name "*.d.ts" -exec cp {} "$dist_dir/$format/bindgen" \;
15+
done

0 commit comments

Comments
 (0)