【问题标题】:Angular 6 - Remove node_module package and use it in for local project changesAngular 6 - 删除 node_module 包并将其用于本地项目更改
【发布时间】:2019-12-01 22:38:52
【问题描述】:

我们决定在我们的项目中使用 ng2-smart-table 作为表格网格。但它并不能完全支持我们在项目中需要做的事情。

所以我们决定在其包级别更改代码(文件位于 node_modules 目录中)。所以我不知道该怎么做,因为如果我在他们的包级别上更改了某些内容,并且如果我们错误地运行npm install 命令,如果他们有任何更新,它将覆盖我们的更改。

如果我想在 ng2-smart-table node_modules 文件中进行更改,我们需要做什么。简单地从package.json 中删除ng2-smart-table 的条目会很好吗?或者有没有更好的方法来做到这一点?

【问题讨论】:

  • node_modules 是一个库目录,你不应该编辑库。您可以 fork ng2-smart-table 并将您的 fork 包含在 github 上的项目中,并将其添加到 npm 并将其包含在您的项目中。或者您可以找到一种方法将源代码复制到您的项目中,并且永远无法获得 ng2-smart-table 团队的任何功能/错误更新。或者甚至在 github 中请求功能请求。但是你不应该在你的 node_modules 目录中编辑任何东西

标签: node.js angular npm angular6 ng2-smart-table


【解决方案1】:

你有两个选择,我希望你会喜欢第一个:

(1) 使用 npm 补丁包 ...https://www.npmjs.com/package/patch-package

您以差异的形式为软件包生成补丁。补丁保存在您的存储库中。当你 npm install 时,它会下载正常的包,然后在 postinstall 期间每次都用差异修补它 - postinstall 在 npm install 完成后自动触发。

(2) npm 安装您要更改的模块,cd 到 node_modules 中的目录 - 进行更改,包括更改 package.json 中的名称然后 npm 发布(所有这些都必须在 node_modules 中的相关目录中完成) - 你有刚刚发布了您自己的软件包版本。现在改用它。

在方法 (1) 中,我不确定补丁包将如何处理对原始包的更新。在方法 (2) 中,您将永远不会获得对主包的任何更新,因为它现在是您已发布到 npm 的全新包。

【讨论】:

  • 完美!非常感谢。
猜你喜欢
  • 2017-03-13
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多