【问题标题】:Best way to prevent a node_modules package from updating防止 node_modules 包更新的最佳方法
【发布时间】:2020-06-29 03:41:05
【问题描述】:

我已经下载/安装了一个 node_module(npm 包)... 我在 node_modules 文件夹中使用了内部文件以满足我的需要。 将它用作 node_module 对我来说是最方便的,但我担心下次更新 npm 包时它可能会更新并删除我所做的所有更改。 确保不更新特定软件包的最佳方法是什么?

非常感谢

【问题讨论】:

    标签: javascript npm node-modules npm-install


    【解决方案1】:

    在 package.json 文件中指定该包的版本。 比如你在dependencies或者devDependencies中手动添加了3.0.0版本的express,将express的入口改成:

    "express":"3.0.0"

    【讨论】:

      【解决方案2】:

      您可以将自己/修改过的包存储在本地(例如,在项目外部的公共位置)或云端(例如 GitHub),然后分别通过文件路径或存储库 URL 引用包。

      在这里查看:

      【讨论】:

      • 如果我只是删除 package.json 中的包名怎么办?这也有效吗?这意味着我仍然可以在 node_modules 中访问它,但它永远不会更新也永远不会被覆盖,对吗???
      • @preston 如果您从package.json 中手动删除自定义包的名称,那么您的package-lock.json 将与package.json 不同步,因此您必须运行@987654329 @ 或 yarn 再次,您的自定义包将从 node_modules 文件夹中消失。但是在原来的源文件夹中,你的包当然还是存在的。
      • 由于某种原因 package-lock.json 没有出现在我的项目中。所以我删除了 package.json 中自定义包的名称,但自定义包仍然在我的 node_modules 中......通常我不会在我的 git 存储库中包含所有 node_modules 但这次我打算只允许node_modules 文件夹中的自定义包将在我 git 上传时包含在内...您对此有何看法?这行得通吗?
      • package-lock.jsonnpm version 5.x.x 中引入。默认情况下package-lock.json 是自动创建的,除非您明确地disable it。一旦您从package.json 手动删除它,该包确实应该从node_modules 中消失。看起来它取决于 npm 版本。你有哪个 npm 版本?
      • 我会将这些自定义包存储和版本化在一个单独的存储库中,并且只有自定义包(!)。对于每个包,您可以简单地创建一个独立的存储库,或者简单地将它们全部放在一个存储库中,并将它们中的每一个保存为单独的完全独立的分支。并通过各自的repo link (and branchname) 引用它们,例如git://github.com/npm/my-custom-packges.git#jquery-v42
      猜你喜欢
      • 2011-04-01
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多