with-staged

1.0.2 • Public • Published

with-staged

run a command (like linting) on git staged files

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

npm travis standard

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

License

Apache-2.0

Package Sidebar

Install

npm i with-staged

Weekly Downloads

258

Version

1.0.2

License

Apache-2.0

Unpacked Size

11.1 kB

Total Files

8

Last publish

Collaborators

  • goto-bus-stop