首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用libman代替npm下载类型记录定义

如何使用libman代替npm下载类型记录定义
EN

Stack Overflow用户
提问于 2018-11-29 10:15:40
回答 1查看 3.4K关注 0票数 7

当我使用npm安装类型记录定义时,可以在Visual构建的类型记录文件中使用它们:

  1. 在Visual中创建新的ASP.NET核心Web应用程序
  2. 使用libman添加jQuery
  3. 使用jQuery添加npm install @types/jQuery
  4. 创建新的类型记录文件: wwwroot/js/site.ts。这将<TypeScriptCompile Include="wwwroot\js\site.ts" />添加到.csproj中。
  5. 我现在可以在我的类型记录文件中使用$全局变量。

但是,当我使用libman下载类型记录定义时,我很难配置类型记录构建来使用它们。

我想我需要添加tsconfig.json,但它似乎干扰了csproj中的TypeScriptCompile。

代码语言:javascript
复制
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),使我能够在www.root\lib\@类型中处理定义文件和全局变量,而不是节点_模块/@类型?

我创建了tsconfig.json并设置了

代码语言:javascript
复制
  "compilerOptions": {
    "typeRoots": [ "wwwroot/lib/@types" ]
  }

但是,现在构建会在site.ts中返回诸如“无法找到name site.ts”之类的错误。MyInterface是用site.d.ts定义的。为什么在没有tsconfig.json的情况下识别类型,而现在却没有?我想避免添加///<reference>注释

编辑:

最后,我将site.d.ts重命名为global.d.ts (感谢@itminus减号答复),并在tsconfig中显式设置popper.js模块的路径:

代码语言:javascript
复制
{
  "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是引导4的依赖关系。它有点棘手,因为@types/bootstrap依赖于popper.js而不是@types/popper.js (这是不兼容的,会在@type/ than /index.d.ts中抛出类型记录错误);

幸运的是,popper.js包含类型记录定义(index.d.ts),我只需告诉类型记录编译器在哪里查看。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-30 03:16:16

我想原因是site.tssite.d.ts在同一个文件夹下。因此,只加载site.ts文件。

请参阅在这里讨论

解析过程总是倾向于.ts文件,而不是.d.ts。这里的rational是一个.d.ts文件可以从.ts文件中生成,所以.ts文件是一个最新版本的真相。

site.d.ts移动到其他文件夹,或将其重命名为site.global.d.ts。都完美无缺地为我工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53536608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档