npm-license-scraper will scan your package.json and node_modules to generate a JSON or TypeScript file including the licenses of all open source packages that are being used.
$ npm i -D @inthepocket/npm-license-scraper
# Via npx
$ npx npm-license-scraper
# Directly
$ node node_modules/.bin/npm-license-scraper--export [filename]: Export to a file. Use a.tsextension to generate a typed TypeScript file withas const. (default./licenses.json)--includeDev: Include dev dependencies in output (defaultfalse)--exclude [package|package,package,package]: Ignore certain packages from the check (e.g submodules, monorepo or private packages)
By default, the tool exports a JSON array with the following shape:
[
{
"package": "react",
"version": "18.0.0",
"license": "MIT",
"url": "https://reactjs.org/",
"isValid": true
},
{
"package": "react-native",
"version": "0.69.3",
"license": "MIT",
"url": "https://npmjs.com/package/react-native",
"isValid": true
}
]When exporting with a .ts extension (--export=licenses.ts), the output is a fully typed TypeScript module using as const:
// Auto-generated by npm-license-scraper
export const licenses = [
{
package: "react",
version: "18.0.0",
license: "MIT",
url: "https://reactjs.org/",
isValid: true,
},
] as const;
export type License = (typeof licenses)[number];This gives you full autocomplete and type inference when consuming the generated file β all values are literal types rather than widened to string or boolean.
