Skip to content

Instantly share code, notes, and snippets.

@legend80s
Forked from iainjreid/package-json.d.ts
Created August 24, 2019 05:47
Show Gist options
  • Save legend80s/6617a9f78e78ad0ad851f47f14ea86a5 to your computer and use it in GitHub Desktop.
Save legend80s/6617a9f78e78ad0ad851f47f14ea86a5 to your computer and use it in GitHub Desktop.
A Typescript type definition for NPM package files
export interface IPackageJSON extends Object {
readonly name: string;
readonly version?: string;
readonly description?: string;
readonly keywords?: string[];
readonly homepage?: string;
readonly bugs?: string|IBugs;
readonly license?: string;
readonly author?: string|IAuthor;
readonly contributors?: string[]|IAuthor[];
readonly files?: string[];
readonly main?: string;
readonly bin?: string|IBinMap;
readonly man?: string|string[];
readonly directories?: IDirectories;
readonly repository?: string|IRepository;
readonly scripts?: IScriptsMap;
readonly config?: IConfig;
readonly dependencies?: IDependencyMap;
readonly devDependencies?: IDependencyMap;
readonly peerDependencies?: IDependencyMap;
readonly optionalDependencies?: IDependencyMap;
readonly bundledDependencies?: string[];
readonly engines?: IEngines;
readonly os?: string[];
readonly cpu?: string[];
readonly preferGlobal?: boolean;
readonly private?: boolean;
readonly publishConfig?: IPublishConfig;
}
/**
* An author or contributor
*/
export interface IAuthor {
name: string;
email?: string;
homepage?: string;
}
/**
* A map of exposed bin commands
*/
export interface IBinMap {
[commandName: string]: string;
}
/**
* A bugs link
*/
export interface IBugs {
email: string;
url: string;
}
export interface IConfig {
name?: string;
config?: Object;
}
/**
* A map of dependencies
*/
export interface IDependencyMap {
[dependencyName: string]: string;
}
/**
* CommonJS package structure
*/
export interface IDirectories {
lib?: string;
bin?: string;
man?: string;
doc?: string;
example?: string;
}
export interface IEngines {
node?: string;
npm?: string;
}
export interface IPublishConfig {
registry?: string;
}
/**
* A project repository
*/
export interface IRepository {
type: string;
url: string;
}
export interface IScriptsMap {
[scriptName: string]: string;
}
{
"name": "@types/gist-package-json",
"version": "1.0.0",
"author": "Iain Reid",
"types": "package-json.d.ts"
}
{
"authors": "Iain Reid",
"definitionFilename": "package-json.d.ts",
"sourceRepoURL": "https://gist.github.com/iainreid820/5c1cc527fe6b5b7dba41fec7fe54bf6e",
"declaredModules": [
"IPackageJSON",
"IAuthor",
"IBinMap",
"IBugs",
"IConfig",
"IDependencyMap",
"IDirectories",
"IEngines",
"IPublishConfig",
"IRepository",
"IScriptsMap"
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment