我使用的是node_swiz模块,该模块又使用验证器模块。

我想对验证器模块进行更改,但我使用npm install来安装模块/依赖项。

我可以只改变node_modules内部的验证器模块,或者当我发布到heroku或下次我运行npm install时,是否会重新创建node_modules依赖项并获得最新版本?

结构如下所示:

myNodeApplication
  - node_modules
     - swiz
         - node_modules
            - validator [this is the library I want to edit]

谢谢你的帮助!


你可以直接编辑文件,但是当npm更新时,这将被覆盖,最好的办法是直接去源代码。

如果更改影响整个模块的功能,并且可能对其他人有用,您可能想要在github上贡献原始源代码,并寻找要实现的更改。

如果这是所需要的专有功能,并且对模块的开发没有帮助,最好的方法是从github中派生出来并进行更改。你可以使用NPM直接从github安装项目,这种方法可以让你将未来的更改集成到原始源代码的自定义版本中。

要直接从github安装,使用以下命令:

NPM安装https://github.com/<用户名>/<存储库>/tarball/<分支>


我不想发布一个新的模块,我也不想让npm install覆盖我的更改。我找到了解决这两个问题的方法,但最好还是采纳@Sdedelbrock的建议。但如果你想这样做,以下是方法:

编辑您的包。Json文件删除你想编辑的依赖项。 进入项目的/node_modules,并将该文件夹移动到存储库中可以提交的其他位置。所以现在/node_modules/dependency在/dependency CD到依赖目录并输入NPM link 在/node_modules和/dependency之外执行这个操作是很重要的

如果一切正常,您现在应该有一个在/node_modules/dependency中创建的符号链接。现在您可以运行您的项目,看看它是否正常工作。


您可以使用补丁包对节点模块进行更改并保持更改。

要做到这一点,可以先对node_modules内部的包进行更改,然后运行以下命令,其中<package name>是您刚刚更改的包的名称。

npx patch-package <package name>

Patch-package将创建一个补丁文件夹,其中包含一个文件,代表您的更改。然后可以将该文件提交给git,稍后可以通过运行npx patch-package(不带任何参数)来恢复补丁。

可选步骤:

在包的脚本部分添加以下内容。当你执行"npm install"时自动修补依赖。

"postinstall": "npx patch-package" 

Fork Github repo并进行必要的更改,然后您可以像这样安装包

npm install git+https://github.com/visionmedia/express.git