From e7b8b25e97856e64fcd68fc11aedc9704e3b41f7 Mon Sep 17 00:00:00 2001 From: MK Date: Tue, 21 Apr 2026 14:18:22 +0800 Subject: [PATCH 1/3] test(e2e): add varlet ecosystem-ci test case Adds varletjs/varlet (Vue 3 component library) to the ecosystem-ci matrix. Runs upstream's ci.yaml workflow (bootstrap + lint + test:coverage) on ubuntu-only at commit 83f6c6a of the dev branch. Uses forceFreshMigration because the project already lists vite-plus in devDependencies. --- .github/workflows/e2e-test.yml | 10 ++++++++++ ecosystem-ci/repo.json | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 1cd7565f8a..63f04af9b8 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -314,6 +314,12 @@ jobs: node-version: 24 command: | vp check --fix + - name: varlet + node-version: 22 + command: | + node scripts/bootstrap.mjs + vp run lint + vp run test:coverage exclude: # frm-stack uses Docker (testcontainers) which doesn't work the same way on Windows - os: windows-latest @@ -335,6 +341,10 @@ jobs: - os: windows-latest project: name: npmx.dev + # varlet upstream CI is ubuntu-only + - os: windows-latest + project: + name: varlet steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/ecosystem-ci/repo.json b/ecosystem-ci/repo.json index 59c08b822f..18e5994b5f 100644 --- a/ecosystem-ci/repo.json +++ b/ecosystem-ci/repo.json @@ -119,5 +119,11 @@ "branch": "main", "hash": "6192f60653c124ae068efaf5d7d0a4134c95edbd", "forceFreshMigration": true + }, + "varlet": { + "repository": "https://github.com/varletjs/varlet.git", + "branch": "dev", + "hash": "83f6c6a418ab9319e07d719d86d4fa952f99e266", + "forceFreshMigration": true } } From 5f6b37ccef5c542d404fed661fbe2276032b7ae1 Mon Sep 17 00:00:00 2001 From: MK Date: Tue, 21 Apr 2026 14:35:56 +0800 Subject: [PATCH 2/3] fix(e2e/varlet): replace bootstrap.mjs with vp run commands The varlet ecosystem-ci job failed on CI because `node scripts/bootstrap.mjs` spawns `pnpm build` via tinyexec, and `pnpm` is not discoverable by Node's spawn on the runner. Bootstrap silently swallows errors, so internal packages (notably varlet-cli) were never compiled, leading to ERR_MODULE_NOT_FOUND when the test:coverage step later invoked varlet-cli. Replace the bootstrap call with explicit vp run commands that use vp's bundled runtime. Build phase 1/2 packages via -F filters (-r would hit the @varlet/cli <-> @varlet/ui devDependency cycle), then cli/icons/ui-compile sequentially. The cli tsc step reports type errors against @varlet/ui (still unbuilt) but emits JS output, which matches upstream bootstrap behavior. --- .github/workflows/e2e-test.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 63f04af9b8..f50958e83b 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -317,7 +317,16 @@ jobs: - name: varlet node-version: 22 command: | - node scripts/bootstrap.mjs + # Replace `node scripts/bootstrap.mjs`, which spawns `pnpm build` via + # tinyexec and cannot find pnpm on the CI runner (ENOENT). Run each + # package's build through vp instead, which uses its bundled runtime. + # Skip `-r` to avoid the @varlet/cli <-> @varlet/ui devDependency cycle. + vp run -F '@varlet/shared' -F '@varlet/touch-emulator' -F '@varlet/preset-unocss' -F '@varlet/preset-tailwindcss' -F '@varlet/import-resolver' -F '@varlet/use' -F '@varlet/vite-plugins' build + # tsc reports type errors against @varlet/ui (which isn't compiled yet) + # but still emits JS output — matches upstream bootstrap behavior. + vp run @varlet/cli#build || true + vp run @varlet/icons#build + vp run @varlet/ui#compile vp run lint vp run test:coverage exclude: From 3896e4b7f212f0182a934bec58822dc8e11624dc Mon Sep 17 00:00:00 2001 From: MK Date: Tue, 21 Apr 2026 15:01:32 +0800 Subject: [PATCH 3/3] fix(e2e/varlet): install pnpm globally via `vp i -g pnpm` Previous fix replaced bootstrap.mjs with explicit vp run commands, but that was unnecessarily complex. Simpler: let `vp i -g pnpm` install pnpm into ~/.vite-plus/bin so scripts/bootstrap.mjs (which spawns `pnpm build` via tinyexec) can resolve it. --- .github/workflows/e2e-test.yml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index f50958e83b..2d98699699 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -317,16 +317,10 @@ jobs: - name: varlet node-version: 22 command: | - # Replace `node scripts/bootstrap.mjs`, which spawns `pnpm build` via - # tinyexec and cannot find pnpm on the CI runner (ENOENT). Run each - # package's build through vp instead, which uses its bundled runtime. - # Skip `-r` to avoid the @varlet/cli <-> @varlet/ui devDependency cycle. - vp run -F '@varlet/shared' -F '@varlet/touch-emulator' -F '@varlet/preset-unocss' -F '@varlet/preset-tailwindcss' -F '@varlet/import-resolver' -F '@varlet/use' -F '@varlet/vite-plugins' build - # tsc reports type errors against @varlet/ui (which isn't compiled yet) - # but still emits JS output — matches upstream bootstrap behavior. - vp run @varlet/cli#build || true - vp run @varlet/icons#build - vp run @varlet/ui#compile + # scripts/bootstrap.mjs spawns `pnpm build` via tinyexec and needs + # pnpm on PATH (not exposed by the vp install itself). + vp i -g pnpm + node scripts/bootstrap.mjs vp run lint vp run test:coverage exclude: