this module is a tool to append/update copyright/license notice in target source files, based on scope management.
For installation, run
npm install copyrightizen -g
to run copyrightizen against some file with glob patterns, run
copyrightizen --paths src/*.ts
to run copyrightizen with config file, just run
copyrightizen [--config custom.config.js]
- configuration file to control various features
- scope management (similar to Intellij IDE's scope concept)
- custom copyright text or custom file template
- support dynamic template
- update strategy to control update or skip update the existing license
- custom Regexp rule to match custom copyright format
- full functionality supported in command line
- seamless support for multi files input from command line (useful for tools like lint-staged)
thanks to cosmiconfig, Copyrightizen support a bunch of config variants:
- a
copyrightizen
property inpackage.json
- a
.copyrightizenrc
file in JSON or YAML format - a
.copyrightizenrc.json
file - a
.copyrightizenrc.yaml
,.copyrightizenrc.yml
, or.copyrightizenrc.js
file - a
copyrightizen.config.js
file exporting a JS object
A sample content of the config should look like this:
//.copyrightizenrc
{
"licenseText": "Copyright (c) Humans on Mars",
"updateStrategy": "update",
"scopes": [
{
"name": "scopeA",
"paths": ["*.ts*"],
"licenseText": "Copyright (c) Humans on Moon",
"updateStrategy": "update",
},
]
}
NOTE: For the detail constraints of the supported configurations, see the JSON schema.
NOTE: Configuration uses globby for glob matching, it support glob features what globby supports
From lowest to highest
- default global Options
- global Options from config file(if config is enabled and a config file is found)
- command line global options
- related scope options if available
the order of scopes within config file matters.
The global scope (aka default config) has the lowest priority. The later a scope is defined in the scopes list, the higher priority it has.
Options:
--version Show version number [boolean]
--config Use the specific configuration file [string]
--detect-rule regexp expression to detect copyright [string]
--paths a list of glob string to match desired files [array]
--license-text the license/copyright notice [string]
--license-template-url the address for license template file [string]
--update-strategy the update strategy when existing copyright is
detected in matched source file
[choices: \\"update\\", \\"skip\\"]
--follow-gitignore exclude the files listed as excluded in .gitignore
[boolean]
-h, --help Show help [boolean]
Examples:
cli.js --config crn.spec.json
cli.js --detect-rule /@license/i
cli.js --license-text \\"@license whatever you want\\"
cli.js --license-template-url config/license.tpl