Skip to content

Commit 3b4ad2e

Browse files
authored
PackageJson: Add devEngines type (#1286)
1 parent ad62d2c commit 3b4ad2e

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

source/package-json.d.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,15 @@ export namespace PackageJson {
208208
*/
209209
type Dependency = Partial<Record<string, string>>;
210210

211+
/**
212+
Specifies requirements for development environment components such as operating systems, runtimes, or package managers. Used to ensure consistent development environments across the team.
213+
*/
214+
type DevEngineDependency = {
215+
name: string;
216+
version?: string;
217+
onFail?: 'ignore' | 'warn' | 'error' | 'download';
218+
};
219+
211220
/**
212221
A mapping of conditions and the paths to which they resolve.
213222
*/
@@ -563,6 +572,17 @@ export namespace PackageJson {
563572
string
564573
>>;
565574

575+
/**
576+
Define the runtime and package manager for developing the current project.
577+
*/
578+
devEngines?: {
579+
os?: DevEngineDependency | DevEngineDependency[];
580+
cpu?: DevEngineDependency | DevEngineDependency[];
581+
libc?: DevEngineDependency | DevEngineDependency[];
582+
runtime?: DevEngineDependency | DevEngineDependency[];
583+
packageManager?: DevEngineDependency | DevEngineDependency[];
584+
};
585+
566586
/**
567587
If set to `true`, a warning will be shown if package is installed locally. Useful if the package is primarily a command-line application that should be installed globally.
568588

test-d/package-json.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ expectType<string[] | undefined>(packageJson.bundleDependencies);
3737
expectType<string[] | undefined>(packageJson.bundledDependencies);
3838
expectType<PackageJson.Dependency | undefined>(packageJson.resolutions);
3939
expectType<PackageJson.WorkspaceConfig | string[] | undefined>(packageJson.workspaces);
40+
expectAssignable<PackageJson.DevEngineDependency>({
41+
name: 'unicorn',
42+
version: '>= 1.0.0',
43+
onFail: 'ignore',
44+
});
4045
expectType<Partial<Record<string, string>> | undefined>(packageJson.engines);
4146
expectType<boolean | undefined>(packageJson.engineStrict);
4247
expectAssignable<

0 commit comments

Comments
 (0)