[英]How to use libman instead of npm to download typescript definitions
当我使用npm安装typescript定义时,我可以在作为Visual Studio构建的一部分的typescript文件中使用它们:
npm install @types/jQuery
添加npm install @types/jQuery
<TypeScriptCompile Include="wwwroot\\js\\site.ts" />
到.csproj。 $
global变量 但是,当我使用libman下载打字稿定义时,我很难配置typescript构建来使用它们。
我想我需要添加tsconfig.json,但它似乎干扰了csproj中的TypeScriptCompile。
wwwroot
js
site.d.ts
site.ts
lib
jquery
jquery.min.js
@types
jquery
index.d.ts
misc.d.ts
…
MyProject.csproj
libman.json
如何修改项目(.csproj,tsconfig.json)以便我将使用wwwroot \\ lib \\ @types中的定义文件和全局变量而不是node_modules / @ types?
我已经创建了tsconfig.json并设置了
"compilerOptions": {
"typeRoots": [ "wwwroot/lib/@types" ]
}
但现在构建在site.ts中返回错误,如“找不到名称MyInterface”。 MyInterface在site.d.ts中定义。 为什么在没有tsconfig.json时识别出类型,现在却没有? 我想避免添加///<reference>
注释
我最终将site.d.ts重命名为global.d.ts(感谢@itminus回答 ),并在tsconfig中显式设置popper.js模块的路径:
{
"compileOnSave": true,
"compilerOptions": {
"baseUrl": "./",
"paths": {
"popper.js": [ "wwwroot/lib/popper.js" ] //use this instead of wwwroot/lib/@types/popper.js which is incompatible
},
"typeRoots": [ "wwwroot/lib/@types" ]
},
"include": [ "wwwroot/js/**/*.ts" ]
}
popper.js是bootstrap 4的依赖。这有点棘手,因为@types/bootstrap
依赖于popper.js
而不是popper.js
@types/popper.js
(这是不兼容的,会在@ types / bootstrap / index中抛出@types/popper.js
错误。 d.ts);
幸运的是,popper.js包含typescript定义(index.d.ts),我只需告诉typescript编译器在哪里查看它。
我想原因是你在同一个文件夹下有site.ts
和site.d.ts
因此,仅加载site.ts
文件。
解析过程总是优先于.d.ts上的.ts文件。 这里的理性是可以从.ts文件生成.d.ts文件,因此.ts文件是真实的更新版本
将您的site.d.ts
移动到其他文件夹,或将其重命名为site.global.d.ts
。 两者都为我完美无瑕地工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.