microsoft/typescript-go · error · Error
usePublishedPlatformPackagesForVsix requires forRelease
Error message
usePublishedPlatformPackagesForVsix requires forRelease
What it means
checkPublishedPlatformPackagesForVsix (Herebyfile.mjs:2230) is the gate for building VSIXes from already-published platform packages: it demands hereby's --forRelease flag before even checking the published typescript version. Building VSIXes against published packages is a release-only operation because it stamps shipping artifacts, so local/non-release runs are rejected.
Source
Thrown at Herebyfile.mjs:2233
return packageJson;
}
}
throw new Error(`Could not find ${publishedTypeScriptAliasPackageName}; run npm install first.`);
});
function getPublishedTypeScriptVersion() {
const version = getPublishedTypeScriptPackageJson().version;
const expectedVersion = getVersion();
if (usePublishedPlatformPackagesForVsix && version !== expectedVersion) {
throw new Error(`usePublishedPlatformPackagesForVsix requires ${publishedTypeScriptAliasPackageName}'s installed version (${version}) to match release version ${expectedVersion}.`);
}
return version;
}
function checkPublishedPlatformPackagesForVsix() {
if (!options.forRelease) {
throw new Error("usePublishedPlatformPackagesForVsix requires forRelease");
}
getPublishedTypeScriptVersion();
}
const getPackageLock = memoize(() => JSON.parse(fs.readFileSync(path.join(__dirname, "package-lock.json"), "utf8")));
/**
* @param {string} npmPackageName
*/
async function getPublishedPlatformPackageLibDir(npmPackageName) {
let promise = publishedPlatformPackageLibDirs.get(npmPackageName);
if (!promise) {
promise = getPublishedPlatformPackageLibDirWorker(npmPackageName);
publishedPlatformPackageLibDirs.set(npmPackageName, promise);
}
return promise;
}
View on GitHub (pinned to 1bcfa18d79)
Solutions
- Run the pipeline with release flags: `npx hereby native-preview:release --forRelease --setPrerelease=dev.N.M`
- For local packaging tests, disable usePublishedPlatformPackagesForVsix so VSIXes are packed from locally built platform packages
- Keep release-only task invocation in one CI script so the flags cannot be dropped
Example fix
# before npx hereby native-preview:package-vsix # with usePublishedPlatformPackagesForVsix enabled # after npx hereby native-preview:release --forRelease --setPrerelease=dev.1.0
Defensive patterns
Strategy: validation
Validate before calling
if (usePublishedPlatformPackagesForVsix && !args.includes("--forRelease")) {
console.error("Published-package VSIX builds are release-only; add --forRelease");
process.exit(1);
} Prevention
- Disable usePublishedPlatformPackagesForVsix for local packaging experiments
- Gate release-only task invocations behind one checked-in script
When it happens
Trigger: usePublishedPlatformPackagesForVsix is true and a task that calls checkPublishedPlatformPackagesForVsix (runSignNativePreviewPackages early-return path, or runPackVsixExtensions) runs without --forRelease, e.g. `npx hereby native-preview:package-vsix` on a local build.
Common situations: A developer enables the published-packages VSIX path to test packaging but forgets the release flags; CI shares one script between local-mode and release-mode builds.
Related errors
- native-preview:release requires --forRelease and --setPrerel
- 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/ca53a7a258830cd0.
Report an issue: GitHub.