【发布时间】:2015-11-26 23:10:56
【问题描述】:
例如,如果我用 git 切换了分支,并希望将 node_modules 与当前的 package.json 同步。我该怎么做?
【问题讨论】:
例如,如果我用 git 切换了分支,并希望将 node_modules 与当前的 package.json 同步。我该怎么做?
【问题讨论】:
如果你的新分支有新的 npm 包或更新的版本依赖,只需在切换分支后再次运行 $ npm install 即可。
如果您的新分支从 package.json 中删除 npm 包,请运行 $ npm prune
【讨论】:
npm install 在这些情况下有效。您可以随时尝试删除您的node_modules 文件夹并重新运行npm install。此线程也可能与您的问题有关。
我们可以利用git hooks 自动运行npm install 当我们拉取或结帐到不同的分支时package.json 发生变化。
这是需要执行的脚本。我们基本上检查 package.json 文件是否存在于 diff 中。
#/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"
运行上面的脚本
chmod +x post-merge 使其可执行然后mv post-merge .git/hooks/ 将其放入git 挂钩中。chmod +x post-checkout 然后mv post-checkout .git/hooks/
【讨论】:
npm install 将从packages.json 安装最新版本的软件包,这通常不是我们想要的行为。
当您在分支之间切换时,您很可能希望在package-lock.json 中修复版本。从 npm 5.7.0 开始,有一个特殊的命令 npm ci 可以做到这一点。
【讨论】: