【发布时间】:2019-08-28 20:34:02
【问题描述】:
我在ngx-mask包中做了一些自定义修改,需要在本地测试一下。
如何覆盖已安装的 npm 包?
目前该包在 packages.json 文件中被声明为依赖项:
"ngx-mask": "^7.8.9"
如果可能的话,我不喜欢 fork 原始包并且不使用 github。
【问题讨论】:
-
包文件必须存在于您的 node_modules 文件夹中。去编辑他们的。
我在ngx-mask包中做了一些自定义修改,需要在本地测试一下。
如何覆盖已安装的 npm 包?
目前该包在 packages.json 文件中被声明为依赖项:
"ngx-mask": "^7.8.9"
如果可能的话,我不喜欢 fork 原始包并且不使用 github。
【问题讨论】:
如果您在您的机器上进行了这些更改。 (我假设你有)
运行您更改的 ngx-mask 包的 build。
导航到dist / 无论您编译的输出文件夹是什么。
在该文件夹中运行 npm pack。这会为您的包创建一个 .tgz zip 文件,其中包含您的自定义修改。
将该文件复制到项目的根目录(您可以将其放在任何位置,但根目录会使事情变得简单)。
在您的 package.json 中将版本号 ngx 掩码替换为以下 "ngx-mask": "file:my-packed-file.tgz"
使用新的package.json 运行npm install
您应该将修改后的副本作为依赖项加载到 node_modules 中。
【讨论】:
ngx-mask 包。如果你看到里面是package.json,那么它没有build 脚本。相反,它是"build:library": "ng-packagr -p package.json" 当您在该项目的根目录中时尝试npm run build:library :)
npm link 的工作方式相同?
package.json 中的依赖项指向本地文件夹不起作用?
在您的 test 存储库(您使用 ngx-mask 包的地方)运行:
npm link /path/to/your/locally/modified/ngx-mask/package
这会将您本地修改的 ngx-mask 安装到您的 test 存储库中。
当您测试完 ngx-mask 包的本地版本后,您可以简单地取消链接。要取消链接本地版本的 ngx-mask,请在您的 test 存储库中运行:
npm unlink --no-save /path/to/your/locally/modified/ngx-mask/package
如果您想重新安装 ngx-mask 包的 registry 版本,请运行:
npm install
【讨论】:
npm uninstall <target-package-name>) 我想要链接的目标包,因为它已经在我的测试仓库中使用(我使用这样的包) - 我猜@如果包已经存在,987654325@ 将跳过。除此之外,上述步骤效果很好。谢谢。
npm-install,然后npm link 将注册表中的包替换为本地包?