Type definitions, validation, and IO utilities for VS Code extension manifests (package.json).
Note
This package only covers fields listed in the VS Code Extension Manifest docs. For a generic Node.js package.json type, use type-fest's package-json.d.ts.
- Strongly typed
ExtensionManifestplus contributes types - Async and sync APIs for reading and writing manifests
- Optional cache and custom stringify support
- Minimal validation: only checks
publisherto stay flexible
npm install vscode-extension-manifest -Dyarn add vscode-extension-manifest -Dpnpm add vscode-extension-manifest -Dbun add vscode-extension-manifest -Dimport {
defineExtensionManifest,
readExtensionManifest,
readExtensionManifestSync,
validateExtensionManifest,
writeExtensionManifest,
writeExtensionManifestSync,
} from 'vscode-extension-manifest'
console.log(await readExtensionManifest())
// => VS Code extension manifest with types
console.log(validateExtensionManifest(readExtensionManifestSync()))
// => true / false
const extensionManifest = defineExtensionManifest({
name: 'vscode-extension-manifest',
version: '1.0.0',
publisher: 'ntnyq',
engines: {
vscode: '^1.96.0',
},
})
await writeExtensionManifest(extensionManifest, {
cwd: 'packages/extension',
})
writeExtensionManifestSync(extensionManifest, {
cwd: 'vscode',
})- Type:
(options?: ReadOptions) => Promise<ExtensionManifest> - Description: read and parse the extension manifest.
Used by readExtensionManifest and readExtensionManifestSync.
filename?: stringdefaultpackage.jsoncwd?: string | URLdefaultprocess.cwd()cache?: boolean | Map<string, Record<string, any>>
- Type:
(options?: ReadOptions) => ExtensionManifest
- Type:
(manifest: ExtensionManifest, options?: WriteOptions) => Promise<void>
Used by writeExtensionManifest and writeExtensionManifestSync.
filename?: stringdefaultpackage.jsoncwd?: string | URLdefaultprocess.cwd()replacer?: (number | string)[] | nulldefaultnullspace?: number | stringdefault2stringify?: (value: any) => stringdefaultJSON.stringify
- Type:
(manifest: ExtensionManifest, options?: WriteOptions) => void
- Type:
(manifest: ExtensionManifest) => ExtensionManifest - Description: for type inference only; no runtime behavior.
- Type:
(manifest: ExtensionManifest) => boolean - Description: currently only checks that
publisheris a non-empty string.
- Customize JSON output with
stringifyorspace. - Use
cache: trueor provide a customMapfor frequent reads. cwdsupportsURL, useful in ESM/URL-based environments.
- Add new manifest fields under
src/typesand update tests. - Missing or mismatched types are welcome as issues or PRs.
- Extension Manifest: https://code.visualstudio.com/api/references/extension-manifest
- Contribution Points: https://code.visualstudio.com/api/references/contribution-points
- VS Code source types: https://github.com/microsoft/vscode/blob/main/src/vs/platform/extensions/common/extensions.ts