with-staged
v1.0.2
Published
run a command (like linting) on git staged files
Downloads
2,809
Maintainers
Readme
with-staged
run a command (like linting) on git staged files
Install - Usage - Node API - License: Apache-2.0
Install
npm install with-staged
Usage
with-staged [PATTERNS] -- <COMMAND>
Run a command on git staged files.
PATTERNS - only run COMMAND for files matching one of the PATTERNS globs. When
no PATTERNS are given, run COMMAND on all staged files.
COMMAND - the command to execute. File names of matching files are appended as
separate arguments.
Example:
$ with-staged '**/*.js' -- standard
runs `standard index.js test.js etc.js`
$ with-staged '**/*.js' -- prettier --write
runs `prettier --write index.js test.js etc.js`
You can use it with husky
for very lightweight linting on git commit
:
{
"devDependencies": {
"husky": "^0.14.0",
"standard": "^11.0.0",
"with-staged": "^1.0.0"
},
"scripts": {
"lint": "standard",
"precommit": "with-staged '**/*.js' -- npm run lint --"
}
}
Node API
withStaged(patterns=['**'], opts={}, cb)
Get a filtered list of staged files.
patterns
is an array of micromatch v2 glob patterns.
opts.cwd
can be set to use a different working directory. The default is process.cwd()
.
cb
is a Node-style (err, files)
callback. files
is an array of file names.
Related
lint-staged is the inspiration for this module.
Differences:
- with-staged is not tested on Windows and probably doesn't work there while lint-staged does
- with-staged has a tiny dependency tree while lint-staged's is somewhat large
- with-staged works with older Node versions while lint-staged requires v6+
- with-staged is configured through command line arguments while lint-staged puts configuration in a separate package.json key
- with-staged just dumps subprocess output, lint-staged has its own sweet progress UI (may be unnecessary for your use case)
lint-staged
{
"lint-staged": {
"**/*.js": [
"prettier --write",
"git add"
]
}
}
with-staged
with-staged '**/*.js' -- prettier --write
with-staged '**/*.js' -- git add