我在我的项目中使用TypeScript 2。我想使用一些js库,但也为该库打字。我可以安装类型与简单的npm安装@类型/一些库
。我不确定我是否应该-保存
或-保存-开发
它们。在我看来,即使是定义类型GitHub自述文件也提到了这两个版本,但从未解释过它们。我认为@类型应该在devDependence
中,因为类型是开发所需要的,而不是在运行时使用,但是我在依赖项
中看到了很多次@类型。我糊涂了。
我应该如何决定@types/*是进入依赖项
还是依赖项
?实际上是否有一些或多或少的官方指示?
在部署节点的特定情况下。从js应用程序到生产,只需要安装运行应用程序所需的依赖项。
npm安装--生产
或
npm ci--生产
或
纱线——生产
在这种情况下,类型应该位于devDependencies
中,以防止它们使安装膨胀。
备注:我知道布拉德·威尔逊在对另一个答案的评论中提到了这一点。不过,这一点似乎值得回答。
如果您只是生成一个bundle,那么可能不需要区分依赖项
和开发依赖项
。当发布其他人可以使用的包时,npm
的此功能通常很有用,并且您不想用冗余的依赖项向它们发送垃圾邮件。
可能还有其他的用例可以帮助拆分依赖关系,但是除非您对此有明确的需求,否则我的建议是选择其中一个并将所有内容放在那里。如果需要的话,事后拆分它们并不难。
此实践IRL的一个著名示例是create react app
,默认情况下,它创建的未弹出样板文件将所有内容放置在依赖项中,请参见此线程和此答案
假设您正在开发一个包“A”,该包在devDependness中包含@type/某些模块包。出于某种原因,您正在从@type/thum-模块导出类型
import {SomeType} from 'some-module';
export default class APackageClass {
constructor(private config: SomeType) {
}
}
现在,包“A”的打字稿消费者无法猜测什么是某些类型,因为包“A”的开发依赖项没有安装。
在这种情况下,您需要将@types/*包与常规的“依赖项”放在一起。对于其他情况,“依赖性”就足够了。
问题内容: 我有一个二进制文件,其中ldd显示了意外的依赖项和libicuuc(来自“ icu”)。 由于在该系统上libxml动态依赖于libicuuc,因此ldd最终会找到它是有意义的,但是是否期望libicuuc也出现在A的ldd输出中?是否有一些命令仅检索链接为依赖项依赖关系的库? 问题答案: 显示启动应用程序或加载共享库时需要加载的所有库。 仅显示二进制文件的直接依赖项。 是否有一些命令
问题内容: 我在ivaven.xml中添加了一个依赖项(让我们将其命名为A),它在maven Central中具有一个pom文件。Ivy使用ibiblio解决了Maven依赖关系。添加到ivy.xml的依赖项(A)具有传递的依赖项(B)。到目前为止,到目前为止很好。常春藤无法解决传递性依赖项(B)的依赖项(C)。 我在ivy.xml中定义了A,如下所示: 在B的pom文件中,在编译和测试范围中都定
编写的PHP扩展需要需要依赖另外一个扩展,在PHP-X中可以调用Extension->require来实现。 PHPX_EXTENSION() { Extension *ext = new Extension("test", "0.0.1"); ext->require("swoole"); ext->require("sockets"); return ext;
依赖关系 这是一个非常轻量级的模块,没有其他依赖项。希望大家在JVM或Android上使用以太坊的RLP编码的项目时会选择使用这个模块,而不再编写自己的实现。
依赖关系 ABI一个非常轻量级的模块,唯一的第三方依赖是 Bouncy Castle,用于hash加密 (Spongy Castle on Android)。 最后希望java和安卓开发者,在JVM或Android上有以太坊ABI合作的项目时会选择使用这个模块,而不是再编写自己的实现。
问题内容: 我有一个依赖关系如下: 当我部署一切正常时,这将拉下另一个引发ClassDefNotFound的依赖项。 我添加了两个依赖项,如下所示: 并且仍然面临着同样的问题,即:MVN带来下来不 我该如何解决? 编辑: 添加; 问题答案: 您可能有一个传递依赖项,另一个依赖项取决于您不需要的版本。 要获得所有直接和传递依赖关系的概述,请尝试: mvn依赖项:树 如果您发现同一依赖项的不同版本之间