From 2c4c1daf81d388cd4fc0b54049d9e2a762e34418 Mon Sep 17 00:00:00 2001 From: HeYunfei Date: Fri, 14 Apr 2023 18:16:37 +0800 Subject: [PATCH] chore: remove `zx` in setup script (#2756) chore: remove zx in setup script --- package.json | 2 +- scripts/README.md | 2 ++ scripts/{meta => }/doctor.mjs | 0 scripts/meta/setup.mjs | 25 ++++++++++++++++++++++--- 4 files changed, 25 insertions(+), 4 deletions(-) rename scripts/{meta => }/doctor.mjs (100%) diff --git a/package.json b/package.json index 64aae5eb148..7fc1ed26ceb 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "bump": "changeset version", "changeset": "changeset", "prepare": "is-ci || husky install", - "pnpm:devPreinstall": "is-ci || node ./scripts/meta/doctor.mjs", + "pnpm:devPreinstall": "is-ci || node ./scripts/doctor.mjs", "test:example": "pnpm --filter \"example-*\" build", "test:unit": "pnpm --filter \"@rspack/*\" test", "test:e2e": "pnpm --filter \"@rspack-e2e/*\" test" diff --git a/scripts/README.md b/scripts/README.md index dab3ca3c7da..1c032497dbe 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -10,6 +10,8 @@ node ./scripts/xxxx.js ## Guidance +Scripts in `meta` folder are self-contained and shouldn't rely on denpendencis outside the `meta` folder(especially modules in `node_modules`). Built-in modules of `node` are ok to use. + ### Writing scripts with zx [zx](https://github.com/google/zx) is a wonderful tool for Writing scripts using JavaScript. diff --git a/scripts/meta/doctor.mjs b/scripts/doctor.mjs similarity index 100% rename from scripts/meta/doctor.mjs rename to scripts/doctor.mjs diff --git a/scripts/meta/setup.mjs b/scripts/meta/setup.mjs index 8b403fee690..0110af25ff7 100644 --- a/scripts/meta/setup.mjs +++ b/scripts/meta/setup.mjs @@ -1,10 +1,20 @@ // Setup everything before pnpm install -import "zx/globals"; +import { spawnSync } from "child_process"; import * as path from "path"; -// Make sure developers are at the workspace root +/** + * + * @param {string} context + * @param {(...args: any[]) => any} fn + */ +function runInContext(context, fn) { + console.log(`⏺️ Running \`${context}\``); + const status = fn(); + console.log(`⏹️ Finish \`${context}\` with ${status}`); +} try { + // Make sure developers are at the workspace root const { default: rootPkgJson } = await import( path.join(process.cwd(), "package.json"), { @@ -25,4 +35,13 @@ try { throw err; } -await $`corepack enable`; +runInContext( + "corepack enable", + () => + spawnSync("corepack", ["enable"], { + cwd: process.cwd(), + env: process.env, + stdio: "inherit", + encoding: "utf-8" + }).status +);