如何检查一致性npm-shrinkwrap.json和package.json

时间:2016-11-01 06:44:44

标签: node.js githooks npm-shrinkwrap package-lock.json

有时我的团队成员忘记在更新package.json后更新npm-shrinkwrap.json。我知道来自uber的this package,但它不能与npm v3一起使用。所以现在它不是解决方案。

我是否可以自动检查npm-shrinkwrap.json和package.json的一致性?我想用git-hook或/和连续做这个。

2 个答案:

答案 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 shrinkwrapnpm 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