diff --git a/Herebyfile.mjs b/Herebyfile.mjs index cd7a8c45fc9d4..9a294063a7459 100644 --- a/Herebyfile.mjs +++ b/Herebyfile.mjs @@ -103,6 +103,7 @@ const { values: rawOptions } = parseArgs({ tests: { type: "string", short: "t" }, fix: { type: "boolean" }, force: { type: "boolean", default: parseEnvBoolean("FORCE") }, + generate: { type: "boolean", default: !isCI }, api: { type: "boolean" }, all: { type: "boolean" }, debug: { type: "boolean" }, @@ -784,10 +785,12 @@ export const generate = task({ run: runGenerate, }); +const generateDependencies = options.generate ? [generate] : []; + export const tscBuild = task({ name: "tsc:build", - description: "Generates sources and builds the tsc binary.", - dependencies: [generate], + description: "Builds the tsc binary, generating sources by default outside CI. Pass --generate or --no-generate to override.", + dependencies: generateDependencies, run: async () => { await buildTsc({ extraFlags: options.release ? getReleaseBuildFlags() : [] }); }, @@ -824,7 +827,9 @@ export const buildWatch = task({ await watchDebounced("build:watch", async (_paths, abortSignal) => { abortSignal.throwIfAborted(); invalidateFileFingerprints(); - await runGenerate(); + if (options.generate) { + await runGenerate(); + } abortSignal.throwIfAborted(); await generateLibs(builtLocal); abortSignal.throwIfAborted(); @@ -1153,7 +1158,7 @@ export const testCodegen = task({ export const buildAPI = task({ name: "build:api", description: "Builds @typescript/typescript JS API.", - dependencies: [generate], + dependencies: generateDependencies, run: async () => { await run("npm", ["run", "-w", "@typescript/typescript", "build"]); }, @@ -1261,7 +1266,7 @@ export const buildWasi = task({ export const buildAPITests = task({ name: "build:api:test", description: "Builds the @typescript/typescript JS API tests.", - dependencies: [generate, lib], + dependencies: [...generateDependencies, lib], run: runBuildAPITests, }); @@ -2565,7 +2570,7 @@ function stripConditionsFromValue(value) { export const buildNativePreviewPackages = task({ name: "typescript:build", description: "Builds TypeScript npm packages for the current platform. Pass --respectGoEnv to preserve caller-provided Go build settings.", - dependencies: usePublishedPlatformPackagesForVsix ? undefined : [generate], + dependencies: usePublishedPlatformPackagesForVsix ? undefined : generateDependencies, run: runBuildNativePreviewPackages, }); @@ -3530,7 +3535,7 @@ export const vscodeTypescriptRelease = task({ export const nativePreviewRelease = task({ name: "typescript:release", hiddenFromTaskList: true, - dependencies: [generate], + dependencies: generateDependencies, run: async () => { if (releaseVscodeTypescript) { throw new Error("typescript:release cannot be used with --vscodeTypescriptRelease; use vscode-typescript:release");