在我的项目中,我使用 git
和 node_modules
文件夹显然被忽略。我正在使用 branch1
并添加了一些依赖项(例如 redux
)并通过 npm install
安装它们。然后我切换到与 branch1
同时创建的 branch2
,现在它与 branch1
具有一些不同的依赖项。我再次使用 npm install 来安装这些软件包。
所以发生的事情是这样的:当我回到 branch1
时,没有找到我在 branch1
工作期间已安装的软件包。我预计这是因为 node_modules
被忽略,两个分支包都存在。尽管我之前安装过它们,但我必须再次运行 npm install。
所以我的问题是什么导致了这个?是 git 在做某事吗?或者 npm 做了什么?
最佳答案
这是一个可能有助于解释的假设场景:
- 在分支 1 上安装“A”。它会保存到
node_modules
中,然后您提交对package.json
和package-lock.json
的更改。 - 您 checkout 分支 2,导致您的
package.json
和package-lock.json
不再有“A” - 尽管您的node_modules
> 保持不变(gitignored),这意味着“A”仍然存在。 - 您在分支 2 上运行
npm install
,它使用您的package.json
和package-lock.json
来更新您的node_modules
根据其规范。因为它们没有“A”,所以它会从您的node_modules
中删除。 - 您 checkout 分支 1,并且您的
node_modules
再次不受此 git checkout 的影响 - 这意味着您需要再次运行“npm install”才能在node_modules 中重新获取“A”
。
关于javascript - 我安装的包在node_modules中丢失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60124126/