如何解决链接到另一个具有更新版本的本地软件包后,从npm安装软件包
我确定其他人有此工作流程,所以我在这里一定会遗漏一些东西。
如何开发一个新版本的软件包,将其链接到另一个应用程序中进行测试,然后安装另一个(不相关的)软件包?
我所做的:
- 运行
git clone git@package-to-update && cd package-to-update
。 - 编辑软件包,将
package-to-update/package.json
的版本更新为2.0.0
。 - 更新
my-app/package.json
以使用package-to-update@2.0.0
。 -
cd package-to-update && npm link && cd my-appp && npm link package-to-update
。 - 测试
my-app
,发现package-to-update@2.0.0
解决了这个问题,参加了一个小型聚会。 - 推送到
package-to-update
的上游,创建合并请求,并等待维护者合并我的更改。 - 同时使用我的本地链接版本,这是我正在使用的功能所必需的。
- 注意,我在
other-unrelated-package
中需要另一个软件包my-app
。 - 运行
cd my-app && npm install other-unrelated-package
。 - NPM失败,因为它正在尝试提取尚未发布的
package-to-update@2.0.0
。 - 哭。
这里是您每次npm install
每次运行以下过程的唯一选择吗?
- 在
package-to-update
中降级my-app/package.json
。 - 运行
npm install other-package
。 - 运行
npm link package-to-update
。 - 在
package-to-update
中升级my-app/package.json
”。
解决方法
我通常只使用npm link
进行开发。如果我要使用本地版本,而不必处理重新链接,则可以通过路径而不是版本来安装它。
npm install /file/path/to/your/module
然后,您在file:
中将得到一个package.json
这样的URL:
"slug": "file:../../slug"
在这种情况下,随后的npm install
将不会搜索注册表。 (因为它将避免将来运行npm install
的注册表,所以这也意味着您需要记住在发布带有补丁的版本时将其更改回注册表!)
我尚未测试,但是此方法可能要求您仅将其视为直接依赖项,而不是另一个依赖项的依赖项。根据您上面的工作流程,情况似乎确实如此,但在此向其他人提及。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。