microsoft/typescript-go · error · Error
native-preview:release requires --forRelease and --setPrerel
Error message
native-preview:release requires --forRelease and --setPrerelease flags, unless nativePreviewReleaseVersion is hardcoded and VSIX production is disabled. Example: npx hereby native-preview:release --forRelease --setPrerelease=dev.1.0
What it means
The `native-preview:release` task validates its invocation up front: it requires --forRelease, and also requires --setPrerelease unless `nativePreviewReleaseVersion` is hardcoded in Herebyfile.mjs AND VSIX production is disabled (produceAnyVsix false). Every sub-step it chains (sign packages, pack packages, pack/sign VSIXes) assumes those flags, so an invalid invocation fails fast with an example command rather than mid-pipeline.
Source
Thrown at Herebyfile.mjs:2397
}
await sign({
SignFileRecordList: [
{
SignFileList: extensions.map(({ vsixSignaturePath }) => ({ SrcPath: vsixSignaturePath, DstPath: null })),
Certs: "VSCodePublisher",
MacAppName: undefined,
},
],
});
}
export const nativePreviewRelease = task({
name: "native-preview:release",
hiddenFromTaskList: true,
run: async () => {
if (!options.forRelease || !options.setPrerelease && (!nativePreviewReleaseVersion || produceAnyVsix)) {
throw new Error("native-preview:release requires --forRelease and --setPrerelease flags, unless nativePreviewReleaseVersion is hardcoded and VSIX production is disabled. Example: npx hereby native-preview:release --forRelease --setPrerelease=dev.1.0");
}
await runBuildNativePreviewPackages();
await runSignNativePreviewPackages();
await runPackNativePreviewPackages();
await runPackVsixExtensions();
await runSignVsixExtensions();
await runCleanSignTempDirectory();
},
});
export const nativePreview = task({
name: "native-preview",
hiddenFromTaskList: true,
dependencies: options.forRelease ? undefined : [packNativePreviewPackages, packVsixExtensions],
run: options.forRelease ? async () => {
throw new Error("This task should not be run in release builds.");
} : undefined,
});
View on GitHub (pinned to 1bcfa18d79)
Solutions
- Run with both flags: `npx hereby native-preview:release --forRelease --setPrerelease=dev.1.0`
- If you intended the hardcoded-version path, ensure nativePreviewReleaseVersion is set in Herebyfile.mjs and VSIX production is disabled, then omit --setPrerelease
- Audit CI scripts to always pass --forRelease and a correctly-formatted --setPrerelease (dev.N.M)
Example fix
# before npx hereby native-preview:release # after npx hereby native-preview:release --forRelease --setPrerelease=dev.1.0
Defensive patterns
Strategy: validation
Validate before calling
function validateReleaseInvocation({ forRelease, setPrerelease, nativePreviewReleaseVersion, produceAnyVsix }) {
if (!forRelease || (!setPrerelease && (!nativePreviewReleaseVersion || produceAnyVsix))) {
throw new Error("Use: npx hereby native-preview:release --forRelease --setPrerelease=dev.N.M");
}
} Prevention
- Wrap hereby release invocations in a script that validates flags first
- If using the hardcoded-version path, confirm VSIX production is disabled in the same change
When it happens
Trigger: Running `npx hereby native-preview:release` with no flags; or with --forRelease but no --setPrerelease while nativePreviewReleaseVersion is not hardcoded or any VSIX production (produceNativePreviewVsix / produceTypeScriptNightlyVsix) is enabled.
Common situations: Copy-pasting the task name without flags; CI scripts that set --forRelease but compute the prerelease variable to empty; a release engineer assuming the hardcoded-version path works while VSIX production is on.
Related errors
- usePublishedPlatformPackagesForVsix requires forRelease
- This task should not be run in non-release builds.
- Prerelease version should be in the form of dev.<number>.<nu
- This task should not be run in release builds.
- Unknown cert: ${cert}
AI-assisted analysis of microsoft/typescript-go@1bcfa18d79 (2026-08-16).
Data as JSON: /api/errors/05a520d2fa387d76.
Report an issue: GitHub.