打字稿 – 环境依赖关系和常规依赖关系有什么区别
在下面的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" },
} typings install< something> –save将保存为依赖项,但这意味着什么? 解决方法
想象你有两个依赖:
的package.json { "dependencies": { "a": "1.0","b": "2.0" } } 依赖树的位置如下: |-a@1.0 |-b@2.0 在这种情况下,将它们都作为globalDependencies或依赖项之间没有区别. |-a@1.0 | |-b@1.0 | |-c@1.0 |-b@2.0 当您将a@1.0安装为全局依赖项时,它将删除对b@1.0和c@1.0的引用,并将要求您将这些依赖项安装为全局变量.它要求您将依赖关系树展平为: |-a@1.0 |-b@1.0 |-b@2.0 |-c@1.0 这适用于c@1.0,但现在你需要两个版本的b. a@1.0取决于b@1.0,但您的应用程序取决于b@2.0.你安装了哪种类型的版本?如果安装b@2.0,则a@1.0的类型定义可能会中断.如果安装b@1.0,您的应用类型可能会中断.这是globalDependencies面临的问题. 当您使用typings构建类型定义并将其安装为常规依赖项时,它会包装子依赖项,而不会将它们暴露给您的应用程序.这意味着如果将a@1.0安装为常规依赖项,则不会使用顶级b@2.0定义.它将使用自己的私有b@1.0,它不会污染您的全局命名空间.实际上,常规依赖关系保留了依赖关系树结构,它们是接近定义的首选方式.问题是并非所有库都将类型定义构建为常规依赖项.理想情况下,随着人们写出更多定义,全局变量将自然被逐步淘汰. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |