簡體   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