From 01cfb4f315bf0da0641905fd095163d23909620a Mon Sep 17 00:00:00 2001 From: pshu Date: Tue, 15 Apr 2025 14:37:13 +0800 Subject: [PATCH 1/6] chore: bump 0.1.0 --- npm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/package.json b/npm/package.json index 5b93a42a..2f737b50 100644 --- a/npm/package.json +++ b/npm/package.json @@ -1,6 +1,6 @@ { "name": "@rspack/resolver", - "version": "1.12.0", + "version": "0.1.0", "description": "Rspack Resolver Node API", "main": "index.js", "browser": "browser.js", From 5f7f62689d95d9bd6d3d51a0d2b6329ea1a33e46 Mon Sep 17 00:00:00 2001 From: pshu Date: Tue, 15 Apr 2025 15:06:28 +0800 Subject: [PATCH 2/6] chore: update readme --- npm/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/README.md b/npm/README.md index be3253e2..99c32d8d 100644 --- a/npm/README.md +++ b/npm/README.md @@ -1,9 +1,9 @@ -# Oxc Resolver Napi Binding +# Rspack Resolver Napi Binding See * `index.d.ts` for `resolveSync` and `ResolverFactory` API. -* [README.md](https://github.com/oxc-project/oxc-resolver?tab=readme-ov-file#oxc-resolver) for options. +* [README.md](https://github.com/web-infra-dev/rspack-resolver?tab=readme-ov-file#rspack-resolver) for options. ## API From 8c0d5a3680a07ea13a85f4664a39a52449f742f9 Mon Sep 17 00:00:00 2001 From: pshu Date: Tue, 15 Apr 2025 15:26:35 +0800 Subject: [PATCH 3/6] chore: bump 0.1.1 --- npm/package.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/npm/package.json b/npm/package.json index 2f737b50..aaecb162 100644 --- a/npm/package.json +++ b/npm/package.json @@ -1,6 +1,6 @@ { "name": "@rspack/resolver", - "version": "0.1.0", + "version": "0.1.1", "description": "Rspack Resolver Node API", "main": "index.js", "browser": "browser.js", @@ -40,5 +40,14 @@ ] }, "optionalDependencies": { + "@rspack/resolver-binding-linux-x64-gnu": "0.1.0", + "@rspack/resolver-binding-linux-x64-musl": "0.1.0", + "@rspack/resolver-binding-linux-arm64-gnu": "0.1.0", + "@rspack/resolver-binding-linux-arm64-musl": "0.1.0", + "@rspack/resolver-binding-win32-arm64-msvc": "0.1.0", + "@rspack/resolver-binding-win32-x64-msvc": "0.1.0", + "@rspack/resolver-binding-win32-ia32-msvc": "0.1.0", + "@rspack/resolver-binding-darwin-x64": "0.1.0", + "@rspack/resolver-binding-darwin-arm64": "0.1.0" } } From ce4cda0f87e3af8c0e0826be4b931bc4685eeab0 Mon Sep 17 00:00:00 2001 From: pshu Date: Tue, 15 Apr 2025 15:39:46 +0800 Subject: [PATCH 4/6] =?UTF-8?q?chore:=20=E2=AC=86=EF=B8=8F=20update=20pnpm?= =?UTF-8?q?-lock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pnpm-lock.yaml | 102 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 101 insertions(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3e47a282..e228b4c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,7 +102,35 @@ importers: specifier: ^18.3.1 version: 18.3.1 - npm: {} + npm: + optionalDependencies: + '@rspack/resolver-binding-darwin-arm64': + specifier: 0.1.0 + version: 0.1.0 + '@rspack/resolver-binding-darwin-x64': + specifier: 0.1.0 + version: 0.1.0 + '@rspack/resolver-binding-linux-arm64-gnu': + specifier: 0.1.0 + version: 0.1.0 + '@rspack/resolver-binding-linux-arm64-musl': + specifier: 0.1.0 + version: 0.1.0 + '@rspack/resolver-binding-linux-x64-gnu': + specifier: 0.1.0 + version: 0.1.0 + '@rspack/resolver-binding-linux-x64-musl': + specifier: 0.1.0 + version: 0.1.0 + '@rspack/resolver-binding-win32-arm64-msvc': + specifier: 0.1.0 + version: 0.1.0 + '@rspack/resolver-binding-win32-ia32-msvc': + specifier: 0.1.0 + version: 0.1.0 + '@rspack/resolver-binding-win32-x64-msvc': + specifier: 0.1.0 + version: 0.1.0 packages: @@ -639,6 +667,51 @@ packages: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} + '@rspack/resolver-binding-darwin-arm64@0.1.0': + resolution: {integrity: sha512-n52OEdgyJDztKYPtY2LAq12BsfFQoNiR4sFV3WjFeJukToTLMpO1RKiacqKcGAVq6R2BKSaFfwoY0q1BT6+Qqg==} + cpu: [arm64] + os: [darwin] + + '@rspack/resolver-binding-darwin-x64@0.1.0': + resolution: {integrity: sha512-zoSO+kghQ9dQWTBSJYiGg6wYzdX7KySttRVHA6j68tnShToAa7qZ2KrKwtjSOEHXbYYyJZ5WLczaB5Ul3mFNqg==} + cpu: [x64] + os: [darwin] + + '@rspack/resolver-binding-linux-arm64-gnu@0.1.0': + resolution: {integrity: sha512-p30mPrn2boy7j4Ti+xd0J+vS7TP4ACnAoM7iIRYGPxATNZjoCKvJWXYEdMy9PKI40e+ybp24UYz2HtBbxlHagg==} + cpu: [arm64] + os: [linux] + + '@rspack/resolver-binding-linux-arm64-musl@0.1.0': + resolution: {integrity: sha512-ZeMUcuVV1yFTKAS+TuhVh+T74VbGuNy7XWoQuQ6gKhTmJaU5AYTTQti0sYEXALq7k7/aDjrd6KkHmJoJAM2YAA==} + cpu: [arm64] + os: [linux] + + '@rspack/resolver-binding-linux-x64-gnu@0.1.0': + resolution: {integrity: sha512-9j3eL8cgPnNj17MQ3tccLEoKkBhq2gVA/hApKf8XTYtn+YRFa0GrtEZ2KIJT43tQiZlbeI24x+EgQV6FRn/zMA==} + cpu: [x64] + os: [linux] + + '@rspack/resolver-binding-linux-x64-musl@0.1.0': + resolution: {integrity: sha512-A7Hynk/dH8QMcAoQIGl3JcBBFmVKhPwUJmCJt3XWQp6yHhPNbms5gqKVJ8ou4k4tQzBWAwX5wpOc0bpJszKE2w==} + cpu: [x64] + os: [linux] + + '@rspack/resolver-binding-win32-arm64-msvc@0.1.0': + resolution: {integrity: sha512-+PBTBkujmCP4wI95s/ufxe9gxuafomwpn1hqVGrLKDLk8LcrV32nW0h3J8uXwfjsTsv3EO+TPVzfn8IBxXTmVA==} + cpu: [arm64] + os: [win32] + + '@rspack/resolver-binding-win32-ia32-msvc@0.1.0': + resolution: {integrity: sha512-0Lu1GpQnHS3qDRSNwzF05LpLrjGM6psbUsvJ5KlgD5Ob3MvTgIrJkOhZLfQXfgTJ5F2U9FPjzH/jkAWM3wCzTA==} + cpu: [ia32] + os: [win32] + + '@rspack/resolver-binding-win32-x64-msvc@0.1.0': + resolution: {integrity: sha512-WoPFjyz5UUortAI2N6wmGdQ8gEpG/VjsC+lG9O23ZilBWzPpwdCMiJDTQ+ywDWarawYHJildHbw607307u/Xmg==} + cpu: [x64] + os: [win32] + '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} @@ -2156,6 +2229,33 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 + '@rspack/resolver-binding-darwin-arm64@0.1.0': + optional: true + + '@rspack/resolver-binding-darwin-x64@0.1.0': + optional: true + + '@rspack/resolver-binding-linux-arm64-gnu@0.1.0': + optional: true + + '@rspack/resolver-binding-linux-arm64-musl@0.1.0': + optional: true + + '@rspack/resolver-binding-linux-x64-gnu@0.1.0': + optional: true + + '@rspack/resolver-binding-linux-x64-musl@0.1.0': + optional: true + + '@rspack/resolver-binding-win32-arm64-msvc@0.1.0': + optional: true + + '@rspack/resolver-binding-win32-ia32-msvc@0.1.0': + optional: true + + '@rspack/resolver-binding-win32-x64-msvc@0.1.0': + optional: true + '@sindresorhus/merge-streams@2.3.0': {} '@tybys/wasm-util@0.9.0': From ab0c740f5ab79c91f7449c86e0082aea0e771637 Mon Sep 17 00:00:00 2001 From: pshu Date: Tue, 15 Apr 2025 16:37:01 +0800 Subject: [PATCH 5/6] fix: update optionalDependencies in prepublish --- .github/workflows/release-npm.yml | 3 +- npm/package.json | 12 +-- pnpm-lock.yaml | 120 +----------------------------- scripts/prepublish.mjs | 98 ++++++++++++++++++++++++ scripts/version.mjs | 9 ++- scripts/x.mjs | 6 ++ 6 files changed, 115 insertions(+), 133 deletions(-) create mode 100644 scripts/prepublish.mjs diff --git a/.github/workflows/release-npm.yml b/.github/workflows/release-npm.yml index 65b48342..51b7a517 100644 --- a/.github/workflows/release-npm.yml +++ b/.github/workflows/release-npm.yml @@ -130,7 +130,8 @@ jobs: git status cp napi/{index,browser}.js npm cp napi/index.d.ts npm - pnpm node scripts/x.mjs publish --otp --tag ${{inputs.tag}} ${{inputs.dry_run && '--dry-run' || '--no-dry-run'}} ${{inputs.push_tags && '--push-tags' || '--no-push-tags'}} + pnpm node scripts/x.mjs prepublish + pnpm node scripts/x.mjs publish --otp --tag ${{inputs.tag}} ${{inputs.dry_run && '--dry-run' || '--no-dry-run'}} ${{inputs.push_tags && '--push-tags' || '--no-push-tags'}} env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} REPOSITORY: ${{ github.repository }} diff --git a/npm/package.json b/npm/package.json index aaecb162..06a9fcab 100644 --- a/npm/package.json +++ b/npm/package.json @@ -39,15 +39,5 @@ "aarch64-apple-darwin" ] }, - "optionalDependencies": { - "@rspack/resolver-binding-linux-x64-gnu": "0.1.0", - "@rspack/resolver-binding-linux-x64-musl": "0.1.0", - "@rspack/resolver-binding-linux-arm64-gnu": "0.1.0", - "@rspack/resolver-binding-linux-arm64-musl": "0.1.0", - "@rspack/resolver-binding-win32-arm64-msvc": "0.1.0", - "@rspack/resolver-binding-win32-x64-msvc": "0.1.0", - "@rspack/resolver-binding-win32-ia32-msvc": "0.1.0", - "@rspack/resolver-binding-darwin-x64": "0.1.0", - "@rspack/resolver-binding-darwin-arm64": "0.1.0" - } + "optionalDependencies": {} } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e228b4c4..6be6aee2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,24 +42,6 @@ importers: specifier: ^8.5.2 version: 8.5.2 - bindings/darwin-arm64: {} - - bindings/darwin-x64: {} - - bindings/linux-arm64-gnu: {} - - bindings/linux-arm64-musl: {} - - bindings/linux-x64-gnu: {} - - bindings/linux-x64-musl: {} - - bindings/win32-arm64-msvc: {} - - bindings/win32-ia32-msvc: {} - - bindings/win32-x64-msvc: {} - fixtures/pnpm: devDependencies: axios: @@ -102,35 +84,7 @@ importers: specifier: ^18.3.1 version: 18.3.1 - npm: - optionalDependencies: - '@rspack/resolver-binding-darwin-arm64': - specifier: 0.1.0 - version: 0.1.0 - '@rspack/resolver-binding-darwin-x64': - specifier: 0.1.0 - version: 0.1.0 - '@rspack/resolver-binding-linux-arm64-gnu': - specifier: 0.1.0 - version: 0.1.0 - '@rspack/resolver-binding-linux-arm64-musl': - specifier: 0.1.0 - version: 0.1.0 - '@rspack/resolver-binding-linux-x64-gnu': - specifier: 0.1.0 - version: 0.1.0 - '@rspack/resolver-binding-linux-x64-musl': - specifier: 0.1.0 - version: 0.1.0 - '@rspack/resolver-binding-win32-arm64-msvc': - specifier: 0.1.0 - version: 0.1.0 - '@rspack/resolver-binding-win32-ia32-msvc': - specifier: 0.1.0 - version: 0.1.0 - '@rspack/resolver-binding-win32-x64-msvc': - specifier: 0.1.0 - version: 0.1.0 + npm: {} packages: @@ -667,51 +621,6 @@ packages: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} - '@rspack/resolver-binding-darwin-arm64@0.1.0': - resolution: {integrity: sha512-n52OEdgyJDztKYPtY2LAq12BsfFQoNiR4sFV3WjFeJukToTLMpO1RKiacqKcGAVq6R2BKSaFfwoY0q1BT6+Qqg==} - cpu: [arm64] - os: [darwin] - - '@rspack/resolver-binding-darwin-x64@0.1.0': - resolution: {integrity: sha512-zoSO+kghQ9dQWTBSJYiGg6wYzdX7KySttRVHA6j68tnShToAa7qZ2KrKwtjSOEHXbYYyJZ5WLczaB5Ul3mFNqg==} - cpu: [x64] - os: [darwin] - - '@rspack/resolver-binding-linux-arm64-gnu@0.1.0': - resolution: {integrity: sha512-p30mPrn2boy7j4Ti+xd0J+vS7TP4ACnAoM7iIRYGPxATNZjoCKvJWXYEdMy9PKI40e+ybp24UYz2HtBbxlHagg==} - cpu: [arm64] - os: [linux] - - '@rspack/resolver-binding-linux-arm64-musl@0.1.0': - resolution: {integrity: sha512-ZeMUcuVV1yFTKAS+TuhVh+T74VbGuNy7XWoQuQ6gKhTmJaU5AYTTQti0sYEXALq7k7/aDjrd6KkHmJoJAM2YAA==} - cpu: [arm64] - os: [linux] - - '@rspack/resolver-binding-linux-x64-gnu@0.1.0': - resolution: {integrity: sha512-9j3eL8cgPnNj17MQ3tccLEoKkBhq2gVA/hApKf8XTYtn+YRFa0GrtEZ2KIJT43tQiZlbeI24x+EgQV6FRn/zMA==} - cpu: [x64] - os: [linux] - - '@rspack/resolver-binding-linux-x64-musl@0.1.0': - resolution: {integrity: sha512-A7Hynk/dH8QMcAoQIGl3JcBBFmVKhPwUJmCJt3XWQp6yHhPNbms5gqKVJ8ou4k4tQzBWAwX5wpOc0bpJszKE2w==} - cpu: [x64] - os: [linux] - - '@rspack/resolver-binding-win32-arm64-msvc@0.1.0': - resolution: {integrity: sha512-+PBTBkujmCP4wI95s/ufxe9gxuafomwpn1hqVGrLKDLk8LcrV32nW0h3J8uXwfjsTsv3EO+TPVzfn8IBxXTmVA==} - cpu: [arm64] - os: [win32] - - '@rspack/resolver-binding-win32-ia32-msvc@0.1.0': - resolution: {integrity: sha512-0Lu1GpQnHS3qDRSNwzF05LpLrjGM6psbUsvJ5KlgD5Ob3MvTgIrJkOhZLfQXfgTJ5F2U9FPjzH/jkAWM3wCzTA==} - cpu: [ia32] - os: [win32] - - '@rspack/resolver-binding-win32-x64-msvc@0.1.0': - resolution: {integrity: sha512-WoPFjyz5UUortAI2N6wmGdQ8gEpG/VjsC+lG9O23ZilBWzPpwdCMiJDTQ+ywDWarawYHJildHbw607307u/Xmg==} - cpu: [x64] - os: [win32] - '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} @@ -2229,33 +2138,6 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rspack/resolver-binding-darwin-arm64@0.1.0': - optional: true - - '@rspack/resolver-binding-darwin-x64@0.1.0': - optional: true - - '@rspack/resolver-binding-linux-arm64-gnu@0.1.0': - optional: true - - '@rspack/resolver-binding-linux-arm64-musl@0.1.0': - optional: true - - '@rspack/resolver-binding-linux-x64-gnu@0.1.0': - optional: true - - '@rspack/resolver-binding-linux-x64-musl@0.1.0': - optional: true - - '@rspack/resolver-binding-win32-arm64-msvc@0.1.0': - optional: true - - '@rspack/resolver-binding-win32-ia32-msvc@0.1.0': - optional: true - - '@rspack/resolver-binding-win32-x64-msvc@0.1.0': - optional: true - '@sindresorhus/merge-streams@2.3.0': {} '@tybys/wasm-util@0.9.0': diff --git a/scripts/prepublish.mjs b/scripts/prepublish.mjs new file mode 100644 index 00000000..0e7d9c48 --- /dev/null +++ b/scripts/prepublish.mjs @@ -0,0 +1,98 @@ +import * as path from "node:path"; +import fs from "node:fs/promises"; +import {getPackageJson} from "./version.mjs"; + +const CpuToNodeArch = { + x86_64: "x64", + aarch64: "arm64", + i686: "ia32", + armv7: "arm" +}; + +const NodeArchToCpu = { + x64: "x86_64", + arm64: "aarch64", + ia32: "i686", + arm: "armv7" +}; + +const SysToNodePlatform = { + linux: "linux", + freebsd: "freebsd", + darwin: "darwin", + windows: "win32" +}; + +const AbiToNodeLibc = { + gnu: "glibc", + musl: "musl" +}; + +const UniArchsByPlatform = { + darwin: ["x64", "arm64"] +}; + +/** + * A triple is a specific format for specifying a target architecture. + * Triples may be referred to as a target triple which is the architecture for the artifact produced, and the host triple which is the architecture that the compiler is running on. + * The general format of the triple is `---` where: + * - `arch` = The base CPU architecture, for example `x86_64`, `i686`, `arm`, `thumb`, `mips`, etc. + * - `sub` = The CPU sub-architecture, for example `arm` has `v7`, `v7s`, `v5te`, etc. + * - `vendor` = The vendor, for example `unknown`, `apple`, `pc`, `nvidia`, etc. + * - `sys` = The system name, for example `linux`, `windows`, `darwin`, etc. none is typically used for bare-metal without an OS. + * - `abi` = The ABI, for example `gnu`, `android`, `eabi`, etc. + */ +function parseTriple(rawTriple) { + const triple = rawTriple.endsWith("eabi") + ? `${rawTriple.slice(0, -4)}-eabi` + : rawTriple; + const triples = triple.split("-"); + let cpu; + let sys; + let abi = null; + if (triples.length === 4) { + [cpu, , sys, abi = null] = triples; + } else if (triples.length === 3) { + [cpu, , sys] = triples; + } else { + [cpu, sys] = triples; + } + const platformName = SysToNodePlatform[sys] ?? sys; + const arch = CpuToNodeArch[cpu] ?? cpu; + return { + platform: platformName, + arch, + abi, + platformArchABI: abi + ? `${platformName}-${arch}-${abi}` + : `${platformName}-${arch}`, + raw: rawTriple + }; +} + + +export async function prepublish_handler(options) { + let root = process.cwd(); + let json = await getPackageJson(root) + + let {napi, version} = json; + + let optionalDependencies = {}; + for (let rawTarget of napi.targets) { + let target = parseTriple(rawTarget); + optionalDependencies[`${napi.packageName}-${target.platformArchABI}`] = version; + } + + const packageFile = path.resolve(process.cwd(), "npm/package.json") + let newPackageJson = { + ...json, + optionalDependencies + } + + await fs.writeFile( + packageFile, + `${JSON.stringify(newPackageJson, null, 2)}\n`, + "utf-8" + ); + +} diff --git a/scripts/version.mjs b/scripts/version.mjs index 5a75665f..dad00a79 100644 --- a/scripts/version.mjs +++ b/scripts/version.mjs @@ -7,6 +7,11 @@ async function getCommitId() { } export async function getLastVersion(root) { + let pkg = await getPackageJson(root); + return pkg.version +} + +export async function getPackageJson(root) { const pkgPath = path.resolve(root, "./npm/package.json"); try { @@ -16,7 +21,7 @@ export async function getLastVersion(root) { type: "json" } }); - return result.default.version; + return result.default; } catch (e) { // Node < 20 const result = await import(pkgPath, { @@ -24,7 +29,7 @@ export async function getLastVersion(root) { type: "json" } }); - return result.default.version; + return result.default; } } diff --git a/scripts/x.mjs b/scripts/x.mjs index 24aa060c..5d78b7f4 100644 --- a/scripts/x.mjs +++ b/scripts/x.mjs @@ -6,6 +6,7 @@ import { Command } from "commander"; import { publish_handler } from "./publish.mjs"; import { version_handler } from "./version.mjs"; +import {prepublish_handler} from "./prepublish.mjs"; process.env.CARGO_TERM_COLOR = "always"; // Assume every terminal that using zx supports color process.env.FORCE_COLOR = 3; // Fix zx losing color output in subprocesses @@ -39,6 +40,11 @@ program .description("bump version") .action(version_handler); +program + .command("prepublish") + .description("prepublishOnly") + .action(prepublish_handler); + let argv = process.argv.slice(2); // remove the `node` and script call if (argv[0] && /x.mjs/.test(argv[0])) { // Called from `zx x.mjs` From 54ad859ed0641b7fd10848d92c032c37c0f80b7d Mon Sep 17 00:00:00 2001 From: pshu Date: Tue, 15 Apr 2025 16:38:48 +0800 Subject: [PATCH 6/6] chore: bump 0.1.2 --- npm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/package.json b/npm/package.json index 06a9fcab..085ac79e 100644 --- a/npm/package.json +++ b/npm/package.json @@ -1,6 +1,6 @@ { "name": "@rspack/resolver", - "version": "0.1.1", + "version": "0.1.2", "description": "Rspack Resolver Node API", "main": "index.js", "browser": "browser.js",