Collects licenses from node_modules
and GitHub and outputs license texts and
metadata in JSON format.
Extends license-checker
with
better filtering, validation, and fetching licenses from GitHub.com if the
license text is missing from the node_modules
folder.
-
First install:
$ npm install --save-dev @iver-wharf/wharf-collect-licenses@2
-
Then write a simple JavaScript file to use it:
// collect-licenses.mjs const { collectLicenses } = require('@iver-wharf/wharf-collect-licenses'); collectLicenses({ outputFilePath: 'src/assets/licenses.json', licenseOverridesPath: 'deploy/collect-licenses/licenses_override', excludedSPDXLicenses: [ '0BSD', // The 0BSD license requires no attribution. ], excludedPackages: [ '@fortawesome/[email protected]', // already contains license notice in stylesheets ], errorOnPackageNames: [ { name: '@fortawesome/fontawesome-free', error: 'not sure version also embeds license in stylesheets' }, ], });
-
Then run it via Node:
$ node collect-licenses.mjs Checking packages in package: /home/me/code/wharf/wharf-web Using license overrides from: /home/me/code/wharf/wharf-web/deploy/collect-licenses/licenses_override Excluding packages: [ '@fortawesome/[email protected]' ] Excluding licenses: [ '0BSD' ] Error on non-excluded package names: [ { name: '@fortawesome/fontawesome-free', error: 'not sure version also embeds license in stylesheets' } ] Resulting JSON will be written to: /home/me/code/wharf/wharf-web/src/assets/licenses.json Found remote license for @angular/[email protected]: https://raw.githubusercontent.com/angular/angular/12.1.1/LICENSE Found remote license for @angular/[email protected]: https://raw.githubusercontent.com/angular/angular/12.1.1/LICENSE Found remote license for @angular/[email protected]: https://raw.githubusercontent.com/angular/angular/12.1.1/LICENSE Found remote license for @angular/[email protected]: https://raw.githubusercontent.com/angular/angular/12.1.1/LICENSE Found remote license for @angular/[email protected]: https://raw.githubusercontent.com/angular/angular/12.1.1/LICENSE Found remote license for @angular/[email protected]: https://raw.githubusercontent.com/angular/angular/12.1.1/LICENSE Found remote license for @angular/[email protected]: https://raw.githubusercontent.com/angular/angular/12.1.1/LICENSE Found remote license for @angular/[email protected]: https://raw.githubusercontent.com/angular/angular/12.1.1/LICENSE Found remote license for [email protected]: https://raw.githubusercontent.com/primefaces/primeng/12.0.0/LICENSE.md Found licenses: ┌─────────┬────────────────────────────────────────────┬────────────────────────────────────────────┬──────────────┐ │ (index) │ package │ repo │ licenses │ ├─────────┼────────────────────────────────────────────┼────────────────────────────────────────────┼──────────────┤ │ 0 │ '@angular/[email protected]' │ 'https://github.com/angular/angular' │ 'MIT' │ │ 1 │ '@angular/[email protected]' │ 'https://github.com/angular/components' │ 'MIT' │ │ 2 │ '@angular/[email protected]' │ 'https://github.com/angular/angular' │ 'MIT' │ │ 3 │ '@angular/[email protected]' │ 'https://github.com/angular/angular' │ 'MIT' │ │ 4 │ '@angular/[email protected]' │ 'https://github.com/angular/angular' │ 'MIT' │ │ 5 │ '@angular/[email protected]' │ 'https://github.com/angular/angular' │ 'MIT' │ │ 6 │ '@angular/[email protected]' │ 'https://github.com/angular/angular' │ 'MIT' │ │ 7 │ '@angular/[email protected]' │ 'https://github.com/angular/angular' │ 'MIT' │ │ 8 │ '@angular/[email protected]' │ 'https://github.com/angular/angular' │ 'MIT' │ │ 9 │ '[email protected]' │ 'https://github.com/sguiheux/EventSource' │ 'MIT' │ │ 10 │ '[email protected]' │ 'https://github.com/inikulin/parse5' │ 'MIT' │ │ 11 │ '[email protected]' │ 'https://github.com/primefaces/primeicons' │ 'MIT' │ │ 12 │ '[email protected]' │ 'https://github.com/primefaces/primeng' │ 'MIT' │ │ 13 │ '[email protected]' │ 'https://github.com/PrismJS/prism' │ 'MIT' │ │ 14 │ '[email protected]' │ 'https://github.com/reactivex/rxjs' │ 'Apache-2.0' │ │ 15 │ '[email protected]' │ 'https://github.com/angular/angular' │ 'MIT' │ └─────────┴────────────────────────────────────────────┴────────────────────────────────────────────┴──────────────┘ Written to: /home/me/code/wharf/wharf-web/src/assets/licenses.json
The resulting JSON file contains the following format:
[
{
"name": "string",
"version": "string",
"description": "string or undefined",
"repository": "string or undefined",
"url": "string or undefined",
"licenses": [ "string" ],
"licenseText": "string"
}
]
make deps # download linting dependencies
make lint
make lint-ts # only lint TypeScript code
make lint-md # only lint Markdown files
Some errors can be fixed automatically. Keep in mind that this updates the files in place.
make lint-fix
make lint-fix-ts # only lint and fix TypeScript files
make lint-fix-md # only lint and fix Markdown files
Maintained by Iver. Licensed under the MIT license.