Skip to content

Generates a text file containing all of the licences for your production dependencies

License

Notifications You must be signed in to change notification settings

TobyAndToby/generate-license-file

Folders and files

NameName
Last commit message
Last commit date
Mar 14, 2025
Dec 1, 2023
Dec 5, 2022
Sep 9, 2023
Feb 28, 2025
Mar 27, 2025
Mar 14, 2025
Nov 16, 2023
Feb 2, 2025
Dec 5, 2022
Dec 1, 2023
Jan 14, 2025
Jul 22, 2023

Repository files navigation

Generate License File

A CLI and code library to generate a text file containing all of the licenses for your production third-party dependencies.

npm

Installation and Usage (CLI)

npm install generate-license-file --save-dev

npx generate-license-file --input package.json --output third-party-licenses.txt --overwrite
Argument Description
--input Absolute or relative path to the package.json for the project.
--output Absolute or relative path for the generated output file.
--overwrite (optional) Allows the CLI to overwrite existing output files. If this option is not provided and the output file already exists, you will be prompted to confirm.
--eol (optional) Specify the line endings used in the output file. Accepted values are crlf or lf. If no value is provided your system default will be used.
--ci (optional) Stops the CLI from prompting the user for inputs and instead exits with a non-zero exit code.
--no-spinner (optional) Disable the CLI spinner while the output file is being generated.
--config (optional) Specify the path to a generate-license-file config file at a non-standard location.
--version (optional) Print the installed generate-license-file version.

If either the --input or --output are omitted the CLI will prompt you for their values.

For a full description of the CLI arguments and their usages please see the relevant docs page.

Installation and Usage (Library API)

npm install generate-license-file --save-dev

TypeScript

import { generateLicenseFile, getLicenseFileText, getProjectLicenses } from "generate-license-file";

// Generate the license file and write it to disk.
await generateLicenseFile("./package.json", "./third-party-licenses.txt");

// Generate the license file content and return it as a string.
const licenseFileText: string = await getLicenseFileText("./package.json");

// Get an array of objects each containing the details of an
// identified license and the dependencies it pertains to.
const licenses: ILicense[] = await getProjectLicenses("./package.json");

For a full description of the library API and example usages please see the relevant docs page.

Advanced Configuration

Advanced configuration of the generated output can be done using a configuration file. In addition to the basic CLI arguments, a configuration file allows you to specify appendices, exclusions, and replacements.

Config files can be called either .glf or .generatelicensefile and can be customised using the following options:

  • File name can optionally end with rc
  • Can be in a ./.config directory (no longer needs the . prefix on the file name)
  • Have the following file extensions: .json, jsonc, .json5, .yaml, .yml, .js, .cjs

E.g. .glf.json, .glfrc.yml, .generatelicensefile.jsonc, .config/glf.js, and more.

{
  // Default config - can be passed in via config and/or CLI
  "inputs": ["./package.json"],
  "output": "./third-party-licenses.txt",
  "lineEnding": "lf",

  // Paths to any file's whose content will be appended to the end of the generated file.
  "append": ["./additional-content.txt"],

  // Substitute the given packages license with the content in the respective file.
  "replace": {
    "[email protected]": "./bespoke-license.txt",
    "another-replaced-package": "./bespoke-license-2.txt"
  },

  // Exclude any packages from the output.
  "exclude": ["[email protected]"],
  
  // Omit the version number in the output file
  "omitVersion": false
}

If you want to call your config file something else then you can pass it to the CLI via the --config argument:

npx generate-license-file --config ./my-config.json

Contributing and Building From Source

generate-license-file is an NX Monorepo. We have aliased common commands in the scripts section of the src/package.json to make working with the project easier.

Each package in the monorepo (under src/packages/) contains a README with further information. The main library and CLI is under packages/generate-license-file.

# cwd: src/

npm install

npm run lint

npm run test  # unit tests

npm run test:e2e  # e2e tests

npm run build  # will build all packages into src/dist/[package name]

License

generate-license-file is licensed under the ISC License.