有时我的团队成员忘记在更新package.json后更新npm-shrinkwrap.json。我知道来自uber的this package,但它不能与npm v3一起使用。所以现在它不是解决方案。
我是否可以自动检查npm-shrinkwrap.json和package.json的一致性?我想用git-hook或/和连续做这个。
答案 0 :(得分:1)
您可以测试npm package git-hooks
,允许安装pre-commit or pre-push hooks(即client-side hooks)
此类挂钩(如此pre-commit one)可用于检查源文件的一致性,如npm-shrinkwrap.json
。
另请参见例如turadg/npm-shrinkwrap-git-hooks
根据需要自动
npm shrinkwrap
和npm install
的一组脚本。如果您将更改分级为
package.json
,则pre-commit
摘要会run npm shrinkwrap
更新npm-shrinkwrap.json
。
#!/usr/bin/env bash
# This ensures that dependencies are installed locally whenever merging a commit
# that changed the shrinkwrap.
function package_changes_staged {
! git diff --cached --quiet -- package.json
}
# update shrinkwrap when spec changes
if package_changes_staged; then
echo "Running 'npm shrinkwrap' to match new package spec..." >&2
npm shrinkwrap
git add npm-shrinkwrap.json
fi
galk-in 更新
我在package.json
中选择了pre-commit这个更新...
"scripts": {
"check-shrinkwrap": "if (! git diff --cached --quiet -- package.json); then echo 'Running `npm shrinkwrap` to match new package spec...' >&2; npm shrinkwrap; git add npm-shrinkwrap.json; fi"
},
...
"pre-commit": [
"check-shrinkwrap",
"test"
]
...
答案 1 :(得分:1)
2017年6月24日更新
现代的答案是使用npm 5和package-lock.json