run a command (like linting) on git staged files
Last updated a year ago by goto-bus-stop .
Apache-2.0 · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install with-staged 
SYNC missed versions from official npm registry.


run a command (like linting) on git staged files

Install - Usage - Node API - License: Apache-2.0

npm travis standard


npm install with-staged


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.


  $ 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.


lint-staged is the inspiration for this module.


  • 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": {
    "**/*.js": [
      "prettier --write",
      "git add"


with-staged '**/*.js' -- prettier --write
with-staged '**/*.js' -- git add



Current Tags

  • 1.0.2                                ...           latest (a year ago)

3 Versions

  • 1.0.2                                ...           a year ago
  • 1.0.1                                ...           3 years ago
  • 1.0.0                                ...           3 years ago
Maintainers (1)
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dependencies (2)
Dev Dependencies (8)
Dependents (0)

Copyright 2014 - 2017 © taobao.org |