mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-09 15:59:30 +00:00
fix(build): fall back to tsx for build TypeScript scripts (#91262)
* fix(build): fall back to tsx for build TypeScript scripts * fix(build): use tsx across TypeScript build scripts --------- Co-authored-by: Steffen Moeller <moeller@debian.org> Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
This commit is contained in:
parent
1e2e7fb936
commit
23998a148f
4 changed files with 70 additions and 10 deletions
|
|
@ -1516,10 +1516,10 @@
|
|||
"audit:seams": "node scripts/audit-seams.mjs",
|
||||
"build": "node scripts/build-all.mjs",
|
||||
"build:ci-artifacts": "node scripts/build-all.mjs ciArtifacts",
|
||||
"build:docker": "node scripts/tsdown-build.mjs && node scripts/check-cli-bootstrap-imports.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && node scripts/runtime-postbuild-stamp.mjs && pnpm plugins:assets:build && pnpm plugins:assets:copy && node --experimental-strip-types scripts/copy-hook-metadata.ts && node --experimental-strip-types scripts/copy-export-html-templates.ts && node --experimental-strip-types scripts/write-build-info.ts && node --experimental-strip-types scripts/write-cli-startup-metadata.ts && node --experimental-strip-types scripts/write-cli-compat.ts",
|
||||
"build:docker": "node scripts/tsdown-build.mjs && node scripts/check-cli-bootstrap-imports.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && node scripts/runtime-postbuild-stamp.mjs && pnpm plugins:assets:build && pnpm plugins:assets:copy && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-startup-metadata.ts && node --import tsx scripts/write-cli-compat.ts",
|
||||
"build:plugin-sdk:dts": "node scripts/run-tsgo.mjs -p tsconfig.plugin-sdk.dts.json --declaration true",
|
||||
"build:plugin-sdk:strict-smoke": "node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/run-with-env.mjs OPENCLAW_PLUGIN_SDK_CANONICAL_DTS=1 -- node --experimental-strip-types scripts/write-plugin-sdk-entry-dts.ts && node scripts/check-plugin-sdk-exports.mjs",
|
||||
"build:strict-smoke": "pnpm plugins:assets:build && node scripts/tsdown-build.mjs && node scripts/check-cli-bootstrap-imports.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && node scripts/runtime-postbuild-stamp.mjs && node scripts/run-with-env.mjs OPENCLAW_PLUGIN_SDK_CANONICAL_DTS=1 -- node --experimental-strip-types scripts/write-plugin-sdk-entry-dts.ts && node scripts/check-plugin-sdk-exports.mjs",
|
||||
"build:plugin-sdk:strict-smoke": "node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/run-with-env.mjs OPENCLAW_PLUGIN_SDK_CANONICAL_DTS=1 -- node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node scripts/check-plugin-sdk-exports.mjs",
|
||||
"build:strict-smoke": "pnpm plugins:assets:build && node scripts/tsdown-build.mjs && node scripts/check-cli-bootstrap-imports.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && node scripts/runtime-postbuild-stamp.mjs && node scripts/run-with-env.mjs OPENCLAW_PLUGIN_SDK_CANONICAL_DTS=1 -- node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node scripts/check-plugin-sdk-exports.mjs",
|
||||
"canvas:a2ui:bundle": "node scripts/bundle-a2ui.mjs",
|
||||
"canvas:a2ui:native:check": "node scripts/sync-native-a2ui.mjs --check",
|
||||
"canvas:a2ui:native:sync": "node scripts/sync-native-a2ui.mjs --write",
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ export const BUILD_ALL_STEPS = [
|
|||
{
|
||||
label: "write-plugin-sdk-entry-dts",
|
||||
kind: "node",
|
||||
args: ["--experimental-strip-types", "scripts/write-plugin-sdk-entry-dts.ts"],
|
||||
args: ["--import", "tsx", "scripts/write-plugin-sdk-entry-dts.ts"],
|
||||
env: {
|
||||
OPENCLAW_PLUGIN_SDK_CANONICAL_DTS: "1",
|
||||
},
|
||||
|
|
@ -77,12 +77,12 @@ export const BUILD_ALL_STEPS = [
|
|||
{
|
||||
label: "copy-hook-metadata",
|
||||
kind: "node",
|
||||
args: ["--experimental-strip-types", "scripts/copy-hook-metadata.ts"],
|
||||
args: ["--import", "tsx", "scripts/copy-hook-metadata.ts"],
|
||||
},
|
||||
{
|
||||
label: "copy-export-html-templates",
|
||||
kind: "node",
|
||||
args: ["--experimental-strip-types", "scripts/copy-export-html-templates.ts"],
|
||||
args: ["--import", "tsx", "scripts/copy-export-html-templates.ts"],
|
||||
cache: {
|
||||
inputs: [
|
||||
"scripts/copy-export-html-templates.ts",
|
||||
|
|
@ -105,17 +105,17 @@ export const BUILD_ALL_STEPS = [
|
|||
{
|
||||
label: "write-build-info",
|
||||
kind: "node",
|
||||
args: ["--experimental-strip-types", "scripts/write-build-info.ts"],
|
||||
args: ["--import", "tsx", "scripts/write-build-info.ts"],
|
||||
},
|
||||
{
|
||||
label: "write-cli-startup-metadata",
|
||||
kind: "node",
|
||||
args: ["--experimental-strip-types", "scripts/write-cli-startup-metadata.ts"],
|
||||
args: ["--import", "tsx", "scripts/write-cli-startup-metadata.ts"],
|
||||
},
|
||||
{
|
||||
label: "write-cli-compat",
|
||||
kind: "node",
|
||||
args: ["--experimental-strip-types", "scripts/write-cli-compat.ts"],
|
||||
args: ["--import", "tsx", "scripts/write-cli-compat.ts"],
|
||||
},
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -119,6 +119,17 @@ describe("package scripts", () => {
|
|||
expect(directNodeEnvScripts).toEqual([]);
|
||||
});
|
||||
|
||||
it.each([
|
||||
{ scriptName: "build:docker", expectedCount: 5 },
|
||||
{ scriptName: "build:plugin-sdk:strict-smoke", expectedCount: 1 },
|
||||
{ scriptName: "build:strict-smoke", expectedCount: 1 },
|
||||
])("runs TypeScript steps in $scriptName through tsx", ({ scriptName, expectedCount }) => {
|
||||
const script = readPackageJson().scripts[scriptName];
|
||||
|
||||
expect(script).not.toContain("--experimental-strip-types");
|
||||
expect(script.match(/node --import tsx scripts\/[^\s]+\.ts/gu)).toHaveLength(expectedCount);
|
||||
});
|
||||
|
||||
it("enables live cache validation in the package script", () => {
|
||||
expect(readPackageJson().scripts["test:live:cache"]).toBe(
|
||||
"node scripts/run-with-env.mjs OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 -- node --import tsx scripts/check-live-cache.ts",
|
||||
|
|
@ -133,7 +144,7 @@ describe("package scripts", () => {
|
|||
|
||||
it("runs runtime postbuild before plugin SDK strict export checks", () => {
|
||||
expect(readPackageJson().scripts["build:plugin-sdk:strict-smoke"]).toBe(
|
||||
"node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/run-with-env.mjs OPENCLAW_PLUGIN_SDK_CANONICAL_DTS=1 -- node --experimental-strip-types scripts/write-plugin-sdk-entry-dts.ts && node scripts/check-plugin-sdk-exports.mjs",
|
||||
"node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/run-with-env.mjs OPENCLAW_PLUGIN_SDK_CANONICAL_DTS=1 -- node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node scripts/check-plugin-sdk-exports.mjs",
|
||||
);
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -116,6 +116,55 @@ describe("resolveBuildAllStep", () => {
|
|||
});
|
||||
});
|
||||
|
||||
it.each([
|
||||
{
|
||||
label: "write-plugin-sdk-entry-dts",
|
||||
scriptPath: "scripts/write-plugin-sdk-entry-dts.ts",
|
||||
expectedEnv: { FOO: "bar", OPENCLAW_PLUGIN_SDK_CANONICAL_DTS: "1" },
|
||||
},
|
||||
{
|
||||
label: "copy-hook-metadata",
|
||||
scriptPath: "scripts/copy-hook-metadata.ts",
|
||||
expectedEnv: { FOO: "bar" },
|
||||
},
|
||||
{
|
||||
label: "copy-export-html-templates",
|
||||
scriptPath: "scripts/copy-export-html-templates.ts",
|
||||
expectedEnv: { FOO: "bar" },
|
||||
},
|
||||
{
|
||||
label: "write-build-info",
|
||||
scriptPath: "scripts/write-build-info.ts",
|
||||
expectedEnv: { FOO: "bar" },
|
||||
},
|
||||
{
|
||||
label: "write-cli-startup-metadata",
|
||||
scriptPath: "scripts/write-cli-startup-metadata.ts",
|
||||
expectedEnv: { FOO: "bar" },
|
||||
},
|
||||
{
|
||||
label: "write-cli-compat",
|
||||
scriptPath: "scripts/write-cli-compat.ts",
|
||||
expectedEnv: { FOO: "bar" },
|
||||
},
|
||||
])("runs the $label TypeScript step through tsx", ({ label, scriptPath, expectedEnv }) => {
|
||||
const step = getBuildAllStep(label);
|
||||
|
||||
const result = resolveBuildAllStep(step, {
|
||||
nodeExecPath: "/custom/node",
|
||||
env: { FOO: "bar" },
|
||||
});
|
||||
|
||||
expect(result).toEqual({
|
||||
command: "/custom/node",
|
||||
args: ["--import", "tsx", scriptPath],
|
||||
options: {
|
||||
stdio: "inherit",
|
||||
env: expectedEnv,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("can route pnpm script steps through direct node entrypoints", () => {
|
||||
const step = getBuildAllStep("plugins:assets:build");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue