使用“file:”包含本地 NPM 包时删除对等依赖项

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

如何对使用

file:
中的
package.json
模式安装的本地 NPM 软件包进行 NPM 重复数据删除对等依赖项?使用公共注册表中的
npm install
安装软件包时,对等依赖项会正确地进行重复数据删除。

相关项目是一个Nest.js库,在NPM上发布为

@joonashak/nestjs-clone-bay
。它包含另一个 Nest.js 应用程序(位于
dev/
目录中)作为开发工具。开发应用程序的
package.json
需要本地库,如下所示:

{
  "dependencies": {
    "nestjs-clone-bay": "file:../lib"
  }
}

通过此设置,可以轻松地进行一些更改并通过重建库代码并重新启动开发应用程序来立即测试它们。但是,这似乎会导致库中包含的包被安装为重复项,而不是按应有的方式进行重复数据删除。

开发应用程序的 

peerDependencies

结果(请注意,

npm ls @nestjs/core
正下方的
@nestjs/[email protected]
依赖项未进行重复数据删除):
nestjs-clone-bay@npm:@joonashak/[email protected] -> ./../lib

在像往常一样从 NPM 安装库的应用程序中执行相同命令的结果:

[email protected] /Users/joonas/code/nestjs-clone-bay/dev ├─┬ @joonashak/[email protected] │ └── @nestjs/[email protected] deduped ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped ├── @nestjs/[email protected] ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped └─┬ nestjs-clone-bay@npm:@joonashak/[email protected] -> ./../lib ├─┬ @joonashak/[email protected] │ └── @nestjs/[email protected] deduped ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped ├── @nestjs/[email protected] ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped └─┬ @nestjs/[email protected] └── @nestjs/[email protected] deduped

在后者中,直接位于 

npm i @joonashak/nestjs-clone-bay
 下的 
[email protected] /Users/joonas/code/space-major/server ├─┬ @joonashak/[email protected] │ ├─┬ @nestjs/[email protected] │ │ └── @nestjs/[email protected] deduped │ └── @nestjs/[email protected] deduped ├─┬ @joonashak/[email protected] │ └── @nestjs/[email protected] deduped ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped ├── @nestjs/[email protected] ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped ├─┬ @nestjs/[email protected] │ └── @nestjs/[email protected] deduped └─┬ @nestjs/[email protected] └── @nestjs/[email protected] deduped

已按应有的方式进行了重复数据删除,并且一切正常(即应用程序中只有一个 Nest.js 实例)。

如何让 NPM 在包含本地版本的库时删除对等依赖项的重复数据? (虽然无论如何,拥有两个对等依赖项实例显然是错误的,但在这种特殊情况下,某些 Nest.js 功能在开发应用程序上完全中断,因为应用程序本身和库正在使用单独的 Nest.js 实例。)
    

我找到了

@nestjs/[email protected]
node.js npm
1个回答
0
投票

@joonashak/[email protected]

安装该工具。
  1. install-local
    安装本地lib并将其保存在
  2. npm i -D install-local
  3. 中。
    
    
    此外,我将启动脚本修改为 
    npx install-local -S ..lib
  4. 以在启动时加载本地更改(我还在每次启动时重建库)。需要注意的是,这似乎在速度上有很大差异。有时
package.json

需要大约 30 秒才能完成,有时几乎是即时的。

    

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