hawkeye
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
Changelog
TODO
- [✓] debug mode
- [ ] unit test
- [✓] travis.ci
- [ ] codecov
- [ ] changelog
- [✓] npm publish
- [ ] TypeScript
- [ ] validating config
- [ ] windows support
License
MIT