@stormqx/hawkeye

0.0.2 • Public • Published

hawkeye Build Status

🦉👀Run scripts on git diff files

About

npm依赖管理那些事一文中描述了npm依赖管理方案的最佳实践。其中聊到了:

任何时候有人提交了 package.json, package-lock.json 更新后,团队其他成员应在 git pull 拉取更新后执行 npm install 脚本安装更新后的依赖包。

hawkeye的设计意图就是将这步操作自动化:通过比较git头来获取git diff files(git diff-tree -r --name-only --no-commit-id HEAD@{1} HEAD),尝试匹配配置文件中声明的文件和命令。 实现方式参考了lint-staged

Installation

npm install --save-dev hawkeye
// package.json
{
  "hawkeye": {
    "package.json": "npm install"
  }
}
{
  "husky": {
    "hooks": {
      "post-merge": "hawkeye"
    }
  }
}

hawkeye一般和husky配合着使用,借助husky改造git钩子的能力,允许你在不同的时机做你想做的事情。所以请保证package.json的依赖中安装(npm install --save-dev)了hawkeye和husky

Command line flags

$ npx hawkeye --help
Usage: hawkeye [options]

Options:
  -V, --version  output the version number
  -d, --debug    Enable debug mode
  -h, --help     output usage information

Configuration

hawkeye支持多种方式编辑配置文件:

  • hawkeye object in your package.json
  • .hawkeyerc file in JSON/JS/YML format
  • hawkeye.config.js file in JS format

关于format的更多细节可以查看cosmiconfig

配置文件为Object形式,其中key为用于匹配文件的glob pattern,value为匹配成功后执行的命令。hawkeye使用micromatch匹配glob pattern。

.hawkeyerc.json配置例子:

{
  "package.json": "your-cmd"
}

publish

$ npm adduser
... input username password email

$ npm publish --access public

flow chart

hawkeye

Changelog

TODO

  • [✓] debug mode
  • [ ] unit test
  • [✓] travis.ci
  • [ ] codecov
  • [ ] changelog
  • [✓] npm publish
  • [ ] TypeScript
  • [ ] validating config
  • [ ] windows support

License

MIT

Package Sidebar

Install

npm i @stormqx/hawkeye

Weekly Downloads

3

Version

0.0.2

License

MIT

Unpacked Size

14 kB

Total Files

13

Last publish

Collaborators

  • stormqx