Skip to content

Instantly share code, notes, and snippets.

@LeeCheneler
Created May 4, 2020 14:59
Show Gist options
  • Save LeeCheneler/657f4b65de690c4329b67d63ed54ebf9 to your computer and use it in GitHub Desktop.
Save LeeCheneler/657f4b65de690c4329b67d63ed54ebf9 to your computer and use it in GitHub Desktop.
typescript type for package.json
export interface Package {
name: string;
version: string;
description?: string;
keywords?: string[];
homepage?: string;
bugs?: {
url: string;
email: string;
}
license?: string;
author?: string | PackagePerson;
contributors?: string[] | PackagePerson[];
files?: string[];
main?: string;
browser?: string;
bin?: string | PackageKeyValueMap<string>;
man?: string | string[];
directories?: PackageDirectories
repository?: string | PackageRepository;
scripts?: PackageKeyValueMap<string>;
config?: PackageKeyValueMap<string>;
dependencies?: PackageKeyValueMap<string>;
devDependencies?: PackageKeyValueMap<string>;
peerDependencies?: PackageKeyValueMap<string>;
bundledDependencies?: string[];
optionalDependencies?: PackageKeyValueMap<string>;
engines?: PackageKeyValueMap<string>
os?: string[];
cpu?: string[];
private?: boolean;
publishConfig?:PackagePublishConfig;
[key: string]: unknown;
}
export interface PackagePerson {
name?: string;
email?: string;
url?: string;
}
export interface PackageKeyValueMap<Value> {
[key: string]: Value
}
export interface PackageDirectories {
bin?: string;
doc?: string;
lib?: string;
man?: string;
example?: string;
test?: string;
}
export interface PackageRepository {
type?: string;
url: string;
directory?: string;
}
export interface PackagePublishConfig {
access?: "private" | "public";
registry?: string
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment