在dev中为npm依赖项管理临时本地依赖项更改的最佳方法

问题描述 投票:1回答:1

在Maven中,如果模块A取决于模块B。在本地更改B时,可以轻松地使用mvn install(对于B)将B部署到本地存储库中,因此A可以获取更新的B,而无需从远程仓库下载。这非常有效。

但是,在NPM世界中,我找不到等效的。我的软件包A取决于B,在开发期间,我经常更改B,我绝对不想为每个更改都运行npm publish。这很慢,并且向公众发布部分完成的软件包B没有任何意义。

我知道NPM支持local dependency,但是这种方式有一些缺点:

  1. 您每次切换到开发人员模式时都必须更改package.json,并请记住在准备就绪时更改回官方依赖项。这非常繁琐且容易出错。
  2. 即使使用本地dep,您也必须为B运行npm build进行打包,并为A运行npm upgrade,这是一个非常痛苦且缓慢的过程

我想为开发过程找到一种有效的方法来满足以下要求:

  1. 切换到开发人员模式时,package.json上没有任何更改。
  2. 理想情况下,只要在[[B中更改了源文件,A便无需其他步骤即可看到B的变化,A应立即看到更新。
  3. 如果至少不可能2,则该过程应快速且无摩擦。
  • 我的想法是应该有一个简单的NPM注册中心开发代理,在开发期间,NPM连接到该代理。默认情况下,它从上游注册表下载软件包。我们可以配置它,因此对于特定的依赖关系例如

    B,它将从指定目录下载,例如本地B的dist目录。因此,我们绝不会碰到A的package.json。

    是否对此问题有任何类似的解决方案或其他更好的建议?
  • node.js npm dependencies registry
    1个回答
    1
    投票
    npm link似乎满足了您的大部分要求。

    您不必更改package.json,它不会以任何方式影响它。一次运行npm link后,对链接的程序包所做的所有更改都会立即显示在您的程序包中。因为它只更改您的node_modules文件夹,所以只要您不将其从dev携带到远程(无论如何也不要将其提交到版本控制中),就无需记住任何更改。

    每次更改为开发人员模式后,您可能仍然必须运行npm link path/to/linked/package,但这是一个相当轻松的命令,不会从远程获得任何信息。

    © www.soinside.com 2019 - 2024. All rights reserved.