微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

打字稿 – 环境依赖关系和常规依赖关系有什么区别

在下面的typings.json文件中,ambientDependencies(或globalDependencies)和常规依赖项之间的区别是什么:

{
  "ambientDependencies": {
    "es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654","jasmine": "registry:dt/jasmine#2.2.0+20160412134438","jquery": "registry:dt/jquery#1.10.0+20160417213236"
  },

“dependencies”: { },<— what does this do?

}

typings install< something> –save将保存为依赖项,但这意味着什么?

解决方法

想象你有两个依赖:

的package.json

{
    "dependencies": {
        "a": "1.0","b": "2.0"
    }
}

依赖树的位置如下:

|[email protected]
|[email protected]

在这种情况下,将它们都作为globalDependencies或依赖项之间没有区别.
但是,当它们有自己的依赖项时会出现问题.想象一下你的依赖树看起来像这样:

|[email protected]
|  |[email protected]
|  |[email protected]
|[email protected]

当您将[email protected]安装为全局依赖项时,它将删除[email protected][email protected]的引用,并将要求您将这些依赖项安装为全局变量.它要求您将依赖关系树展平为:

|[email protected]
|[email protected]
|[email protected]
|[email protected]

这适用于[email protected],但现在你需要两个版本的b. [email protected]取决于[email protected],但您的应用程序取决于[email protected].你安装了哪种类型的版本?如果安装[email protected],则[email protected]的类型定义可能会中断.如果安装[email protected],您的应用类型可能会中断.这是globalDependencies面临的问题.

当您使用typings构建类型定义并将其安装为常规依赖项时,它会包装子依赖项,而不会将它们暴露给您的应用程序.这意味着如果将[email protected]安装为常规依赖项,则不会使用顶级[email protected]定义.它将使用自己的私有[email protected],它不会污染您的全局命名空间.实际上,常规依赖关系保留了依赖关系树结构,它们是接近定义的首选方式.问题是并非所有库都将类型定义构建为常规依赖项.理想情况下,随着人们写出更多定义,全局变量将自然被逐步淘汰.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐