Execute CLI Statements based upon Opt-In / Opt-Out Rules.
npm install opt-cli








Simply install locally as a development dependency to your project's package:
```
npm install --save-dev opt-cli
You can check out the eslint-find-new-rules/package.json for reference.
`JSON`
"config": {
"ghooks": {
"pre-commit": "opt --in pre-commit --exec 'npm run validate'"
}
},
While commiting, npm run validate will not be executed by default..opt-in
However, one can opt in by creating a file in the root of the project, with the content pre-commit
#### .opt-in
Each line in the .opt-in file, is the keyword used after the opt --in rule.
So for the above example, it's pre-commit
``
cat .opt-in"ghooks": {
"pre-commit": "opt --in pre-commit --exec 'npm run validate'"
}
pre-commit # the keyword used after the opt --in command
opt --out works exactly, the opposite way of opt --in.
`JSON`
"config": {
"ghooks": {
"pre-commit": "opt --out pre-commit --exec 'npm run validate'"
}
},
In this case, npm run validate will be executed before any changes can be commited..opt-out
In order to opt out, you have to create a file in the root of the project, with the content pre-commit
#### .opt-out
Similar to .opt-in file, each line in .opt-out file, is the keyword used after the opt --out rule.
So for the above example, it's pre-commit
``
cat .opt-out"ghooks": {
"pre-commit": "opt --out pre-commit --exec 'npm run validate'"
}
pre-commit # the keyword used after the opt --out command
* don't forget to update .gitignore to ignore this file.
* opt-in, opt-out files can contain multiple rules#
* every line must contain only a single rule.
* can be used to comment any rule.
You may also include opt-cli as a library:
`JavaScript`
var opt = require( 'opt-cli' );
Given the example setup from above, usage would be as follows:
`JavaScript`
opt.testOptIn( 'pre-commit' ) === true
opt.testOptOut( 'pre-push' ) === true
Using opt.getExplicitOpts() you would receive:
`JavaScript`
{
'pre-commit': true,
'pre-push': false
}
Rules to opt-into or opt-out of can also be specified using ...
- ... an in or out array of a package.json's config.opt field:
`JSON`
"config": {
"opt": {
"in": [ "pre-commit" ],
"out": [ "pre-push" ]
}
},
- ... the environment variables OPT_IN and OPT_OUT:
```Delimit multiple rules with ":" on *nix / ";" on Win
export OPT_IN="pre-commit"
export OPT_OUT="pre-push"
|
Kent C. Dodds
💻 👀 |
Guilherme J. Tramontina
💻 |
Andreas Windt
💻 📖 ⚠️ |
Sarbbottam Bandyopadhyay
📖 |
Suhas Karanth
🐛 💻 |
| :---: | :---: | :---: | :---: | :---: |
This project follows the all-contributors specification (emoji key).
Contributions of any kind welcome!
Special thanks to @kentcdodds for encouraging to engage in oss, for the wonderful resources (check out the Egghead videos!) and — together with gtramontina — for coming up with the original idea to this module!