繁体   English   中英

如何使用libman而不是npm来下载typescript定义

[英]How to use libman instead of npm to download typescript definitions

当我使用npm安装typescript定义时,我可以在作为Visual Studio构建的一部分的typescript文件中使用它们:

  1. 在Visual Studio中创建新的ASP.NET Core Web应用程序
  2. 使用libman添加jQuery
  3. 使用npm install @types/jQuery添加npm install @types/jQuery
  4. 创建新的打样文件:wwwroot / js / site.ts。 这将<TypeScriptCompile Include="wwwroot\\js\\site.ts" />到.csproj。
  5. 我现在可以在我的打字稿文件中使用$ 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.tssite.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM