NG新应用程序生成的Angular应用程序,具有11个依赖关系:
使用原理图在库之后安装客户店面:
在局部区域创建一个新文件夹,在其中执行命令行:
其中只有一个node_modules文件夹,其中包含许多JS文件和Typescript的.D.TS文件。
这个 @spartacus/storefront的软件包。
但是,它在Spartacus项目的源代码中包含许多定义:Package.json:
NPM具有处理子依赖性的良好过程:如果我的软件包取决于请求版本2和其他库,但是其他库取决于请求版本1,则相关关系图表如下:
这通常很棒:现在,某个单亲有自己的请求v1副本。它可以使用它而不会干扰我的书包的V2副本。
但是,有一种情况会失败:插件-in(插件)。插件包的目的是将其与另一个主机软件包一起使用,即使它并不总是直接使用主机软件包。已经有很多示例Node.js软件包生态系统中的模型:
本质上,插件旨在与主机软件包一起使用。但更重要的是,它们的目的是与主机袋的主要版本一起使用。例如,我的chai的1.x和2.x版本- 促成的插件适用于Chai版本0.5,3.x版本适用于Chai 1.x。另一个例子是咕unt。0.3.1 grunt-contrib-stylus可以与Grunt 0.4.0rc4一起使用,但是由于删除了API,因此使用Grunt 0.4.0rc5时会中断它。
假设插件明确声明主机软件包的版本号,即使具有此直接依赖的插件可能是因为主机软件包提供了一个实用的程序API,并在插件package中指定了依赖项。依赖关系该树包含主机袋的多个副本。
作为应用程序开发人员,请使用最新版本的Winston 0.6将它们放入包装中。
运行后,生成了两个不同版本的温斯顿:
解决这个问题的解决方案是。
peerDepentencies非常易于使用。编写插件时,请确保主机软件包版本的peerDepentencies并将其添加到package.json:json:
现在,将安装柴ai时,将安装柴袋。
如果您尝试安装另一个仅适用于0.x版本的CHAI插件,则将收到一条错误消息。
原始:https://juejin.cn/post/70966042698478385
