Skip to main content
Version: Next

Config File

The generate-license-file CLI can be configured using a config file so that you don't need to re-enter the same config options every time. The config file also allows you to specify additional more complex options that are not available as CLI flags.

File Formats​

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.

Config Options​

The file can contain all of the options that are available as CLI flags.

{
"inputs": ["./package.json"],
"output": "./THIRD-PARTY-LICENSES.txt",
"overwrite": true,
"eol": "lf",
"ci": true,
"no-spinner": true
}
tip

JavaScript allows for more dynamic usages

module.exports = {
ci: process.env.CI === "true",
};

The more advanced features that a config file can contain allow you to edit the contents of the generated output file.

Append​

The append option allows you to append files to the end of the generated output file. This is useful if your project contains other types of licensed material other than node_modules dependencies that you want to include like fonts or images.

{
"append": ["./extra-licenses.txt"]
}

Replace​

The replace option allows you to replace the license content for a specific dependency. This is useful in situations like:

  • A dependency does not have its license file included in the published package
  • The license file is not in a standard format
  • The published package contains multiple license files and you want to pick a specific one

Packages can be specified using the format package@version or package, where the latter will match all versions of a given package. If both are specified, then the configuration with a matching version will take precedence.

info

While it might be more convenient to use the package name without the version, it is recommended to use the version where possible to guarentee you always know exactly which package you are replacing the license for.

The replacement value can be:

  • A relative or absolute file path to a location on disk
  • A URL to a remote file on the internet
tip

An advantage to using a file path over a URL is that the generated output will always be the same for any given commit.

{
"replace": {
"lodash@1.2.3": "./licenses/lodash.txt",
"react@1.2.3": "./node_modules/react/LICENSE",
"axios": "./node_modules/axios/LICENSE",
"express": "https://spdx.org/licenses/MIT.txt"
}
}
When using pnpm, the way to reference a file in a node_module can look a little different
{
"replace": {
"react@18.2.0": "node_modules/.pnpm/react@18.2.0/node_modules/react/LICENSE"
}
}

Exclude​

The exclude option allows you to exclude a dependency from the generated output file. This is useful if a dependency accidentally lists one of it's own dev-dependencies as a normal dependency and you want to exclude that dev-dependency.

{
"exclude": ["lodash@1.2.3"]
}

File Location​

If you want to keep your config file in a different location to the current working directory (or a ./.config directory) then you can specify the location of the config file using the --config CLI flag.

generate-license-file --config ./path/to/config.json