我使用的是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]谢谢你的帮助!
发布于 2012-11-09 12:24:22
你可以直接编辑这个文件,但是只要npm更新,这个文件就会被覆盖,最好的办法就是直接进入源代码。
如果更改会影响整个模块的功能,并且可能对其他人有用,那么您可能希望对github上的原始源做出贡献,并寻找要实现的更改。
如果这是需要的专有功能,并且对模块的开发没有帮助,最好的做法是从github派生它并进行更改。您可以使用NPM直接从github安装项目,此方法将允许您将未来的更改集成到来自原始源的自定义版本中。
要直接从github安装,请使用以下命令:
npm install https://github.com/<username>/<repository>/tarball/<branch>
发布于 2020-06-25 11:40:56
您可以使用patch-package对节点模块进行更改并将其持久化。
这可以通过首先在node_modules中对包进行更改,然后运行以下命令来完成,其中<package name>是您刚刚更改的包的名称。
npx patch-package <package name>然后,patch-package将创建一个patches文件夹,其中包含一个代表您的更改的文件。然后可以将该文件提交给git,稍后可以通过运行npx patch-package (不带任何参数)恢复补丁。
可选步骤:
在package.json的脚本部分添加以下代码,以便在执行"npm install“时自动修补依赖项。
"postinstall": "npx patch-package" 发布于 2020-06-25 11:35:59
我不想发布新的模块,也不想让npm install覆盖我的更改。我找到了这两个问题的解决方案,但采纳@Sdedelbrock的建议可能会更好。但如果你想这样做,方法如下:
package.json文件以删除要编辑的依赖项。/node_modules,然后将该文件夹移动到存储库中可以提交的其他位置。因此,现在/node_modules/dependency位于/dependencycd,进入依赖项目录,在项目目录的根目录中键入npm linkcd,然后键入npm link dependency,这一点很重要,请在/node_modules和/dependency之外执行此操作
如果一切正常,您现在应该有一个在/node_modules/dependency中创建的符号链接。现在,您可以运行您的项目来查看它是否工作。
https://stackoverflow.com/questions/13300137
复制相似问题