fix: bun monorepo complex deps

This commit is contained in:
eric
2026-03-08 03:29:54 +01:00
parent 81e9b93914
commit d7a6d6b0ba
24 changed files with 804 additions and 10 deletions

View File

@@ -102,3 +102,22 @@ sh_test(
"//conditions:default": ["@bun_linux_x64//:bun"],
}),
)
sh_test(
name = "bun_install_workspaces_catalog_test",
srcs = ["workspaces_catalog.sh"],
args = select({
":linux_x86_64": ["$(location @bun_linux_x64//:bun)"],
":linux_aarch64": ["$(location @bun_linux_aarch64//:bun)"],
":darwin_x86_64": ["$(location @bun_darwin_x64//:bun)"],
":darwin_aarch64": ["$(location @bun_darwin_aarch64//:bun)"],
"//conditions:default": ["$(location @bun_linux_x64//:bun)"],
}),
data = select({
":linux_x86_64": ["@bun_linux_x64//:bun"],
":linux_aarch64": ["@bun_linux_aarch64//:bun"],
":darwin_x86_64": ["@bun_darwin_x64//:bun"],
":darwin_aarch64": ["@bun_darwin_aarch64//:bun"],
"//conditions:default": ["@bun_linux_x64//:bun"],
}),
)

View File

@@ -0,0 +1,81 @@
#!/usr/bin/env bash
set -euo pipefail
bun_path="$1"
workdir="$(mktemp -d)"
trap 'rm -rf "${workdir}"' EXIT
mkdir -p "${workdir}/packages/pkg-a" "${workdir}/packages/pkg-b" "${workdir}/packages/web"
cat >"${workdir}/package.json" <<'JSON'
{
"name": "workspace-catalog-root",
"private": true,
"workspaces": {
"packages": ["packages/*"],
"catalog": {
"is-number": "7.0.0",
"vite": "5.4.14"
},
"catalogs": {
"testing": {
"vitest": "3.2.4"
}
}
}
}
JSON
cat >"${workdir}/packages/pkg-a/package.json" <<'JSON'
{
"name": "@workspace/pkg-a",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"is-number": "catalog:"
},
"scripts": {
"check": "bun -e \"const version = require('is-number/package.json').version; if (version !== '7.0.0') { console.error(version); process.exit(1); }\""
}
}
JSON
cat >"${workdir}/packages/pkg-a/index.js" <<'JS'
module.exports = { value: 42 };
JS
cat >"${workdir}/packages/pkg-b/package.json" <<'JSON'
{
"name": "@workspace/pkg-b",
"version": "1.0.0",
"dependencies": {
"@workspace/pkg-a": "workspace:*",
"is-number": "catalog:"
},
"scripts": {
"check": "bun -e \"const { value } = require('@workspace/pkg-a'); const version = require('is-number/package.json').version; if (value !== 42 || version !== '7.0.0') { console.error({ value, version }); process.exit(1); }\""
}
}
JSON
cat >"${workdir}/packages/web/package.json" <<'JSON'
{
"name": "@workspace/web",
"private": true,
"devDependencies": {
"vite": "catalog:",
"vitest": "catalog:testing"
},
"scripts": {
"check": "bun -e \"const viteVersion = require('vite/package.json').version; const vitestVersion = require('vitest/package.json').version; if (viteVersion !== '5.4.14' || vitestVersion !== '3.2.4') { console.error({ viteVersion, vitestVersion }); process.exit(1); }\""
}
}
JSON
"${bun_path}" install --cwd "${workdir}" >/dev/null
rm -rf "${workdir}/node_modules" "${workdir}/packages/"*/node_modules
"${bun_path}" install --cwd "${workdir}" --frozen-lockfile >/dev/null
"${bun_path}" run --cwd "${workdir}/packages/pkg-a" check >/dev/null
"${bun_path}" run --cwd "${workdir}/packages/pkg-b" check >/dev/null
"${bun_path}" run --cwd "${workdir}/packages/web" check >/dev/null