copyrightizen
v1.0.3
Published
A tool generates designated copyright notice to target files with scope support like Intellij IDEs.
Downloads
96
Readme
Copyrightizen
this module is a tool to append/update copyright/license notice in target source files, based on scope management.
Usage
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]
Features
- [x] configuration file to control various features
- [x] scope management (similar to Intellij IDE's scope concept)
- [x] custom copyright text or custom file template
- [ ] support dynamic template
- [x] update strategy to control update or skip update the existing license
- [x] custom Regexp rule to match custom copyright format
- [x] full functionality supported in command line
- [x] seamless support for multi files input from command line (useful for tools like lint-staged)
Configuration
Config File
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
Options Precedence order
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
Scopes Precedence order
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.
Command Line Help Message
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