在目前的 npm 版本中,所有的软件包都会被直接放置在应用根目录的 node_modules 文件夹中,这样虽然解决了文件夹嵌套层次过深和重复下载软件包的问题,但如果只这样做肯定会导致软件包版本冲突的问题,如何解决呢?
比如 A 依赖 X 的 1 版本,B 依赖 X 的 2 版本,如果你先下载的是 A,那么 A 依赖的 X 会被放置在根目录的 node_modules 文件夹中, 当下载 B 时,由于在根目录中已经存在 X 并且版本不一致,那么 B 依赖的 X 就会被放置在 B 软件包中的 node_module 文件夹中,通过此方式解决软件包版本冲突的问题。 4. node_modules 文件夹中的软件包都需要提交到 git 仓库中吗? 在 node_modules 文件夹中有很多软件包,随着应用程序的增长,软件包也会越来越多,甚至会达到几百兆。 当我们将应用提交到版本库时,我们不想提交它,因为它们不是我们应用中的源代码,而且由于碎文件比较多,其他人在检出代码时需要等待的时间会很久。当其他人拿到应用程序时没有依赖软件包应用程序是运行不起来的,如何解决呢? 实际上应用程序依赖了哪些软件包在 package.json 文件中都会有记录,其他人可以通过 npm install 命令重新下载它们。为了保持下载版本一致,npm 还会根据 package-lock.json 文件中的记录的地址进行下载。 将应用程序提交到版本库之前,将 node_modules 文件夹添加到 .gitignore 文件中。 git init git status echo “node_modules/“ > .gitignore git status git add . git commit -m “our first commit”
上一篇:语义版本控制
下一篇:使用 Node.js 软件包