如何将 node_modules 与实际的 package.json 同步?
Posted
技术标签:
【中文标题】如何将 node_modules 与实际的 package.json 同步?【英文标题】:How to sync node_modules with actual package.json? 【发布时间】:2015-11-26 23:10:56 【问题描述】:例如,如果我用 git 切换了分支,并希望将 node_modules
与当前的 package.json
同步。我该怎么做?
【问题讨论】:
【参考方案1】:如果你的新分支有新的 npm 包或更新的版本依赖,只需在切换分支后再次运行 $ npm install
即可。
如果您的新分支从 package.json 中删除 npm 包,请运行 $ npm prune
【讨论】:
在这种情况下运行 npm install 后,我一直坚持“shasum check failed”。可以和这个联系吗?你确定 npm install 在这种情况下有效吗? 我很肯定npm install
在这些情况下有效。您可以随时尝试删除您的node_modules
文件夹并重新运行npm install
。此线程也可能与您的问题有关。【参考方案2】:
我们可以利用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"
运行上面的脚本
git pull - 运行chmod +x post-merge
使其可执行然后mv post-merge .git/hooks/
将其放入git 挂钩中。
git checkout - 运行chmod +x post-checkout
然后mv post-checkout .git/hooks/
【讨论】:
【参考方案3】:npm install
将从packages.json
安装最新版本的软件包,这通常不是我们想要的行为。
当您在分支之间切换时,您很可能希望在package-lock.json
中修复版本。从 npm 5.7.0 开始,有一个特殊的命令 npm ci
可以做到这一点。
更多详情Why does "npm install" rewrite package-lock.json?
【讨论】:
以上是关于如何将 node_modules 与实际的 package.json 同步?的主要内容,如果未能解决你的问题,请参考以下文章
我如何直接将“node_modules”与“yarn berry”一起使用
pac (PAC(Proxy Auto Config) 是一个 Script;经由编写这个 Script,我们可以让系统判断在怎么样的情形下,要利用哪一台 Proxy 来进行联机。)
如何使用 postinstall 编辑 package.json