繁体   English   中英

如何将 node_modules 与实际的 package.json 同步?

[英]How to sync node_modules with actual package.json?

例如,如果我已经用 git 切换了分支并希望将node_modules与当前的package.json同步。 我怎么做?

如果您的新分支有新的 npm 包或更新的版本依赖项,只需在切换分支后再次运行$ npm install

如果您的新分支从 package.json 中删除了 npm 包,请运行$ npm prune

当我们拉取或检出不同的分支时,当package.json发生变化时,我们可以使用git hooks自动运行npm install

这是需要执行的脚本。 我们主要检查差异中是否存在package.json文件。

#/usr/bin/env bash

changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"

check_run() {
    echo "$changed_files" | grep --quiet "$1" && eval "$2"
}

check_run package.json "npm install"

运行上面的脚本

  • git pull - 运行chmod +x post-merge使其可执行,然后mv post-merge .git/hooks/将其放入 git hooks。
  • git checkout - 运行chmod +x post-checkout然后mv post-checkout .git/hooks/

npm install将安装从包的最新版本packages.json这往往是不期望的行为。

当您在分支之间切换时,您很可能希望在package-lock.json修复版本。 从 npm 5.7.0 开始,有一个特殊的命令npm ci可以做到这一点。

为什么“npm install”重写 package-lock.json?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM