簡體   English   中英

是否可以在其他項目中引用打字稿文件而無需將項目添加到解決方案中?

[英]Is it possible to reference typescript files in other projects without adding projects to the solution?

在大型軟件中,將代碼分解為項目是一個好主意。 例如,有一個框架項目,其中包含一個名為Company.Framework的項目以及其他一些使用諸如Company.ProductA,Company.ProductB之類的共享代碼的項目的所有基類。

是否可以在其他項目中引用.ts文件,例如僅引用其dll而不添加項目,因此可以從業務開發人員中隱藏框架項目。

問題是如何在其他項目中引用.ts文件而不將這些項目添加到解決方案中。 例如,只需添加其dll

我確定您知道這一點,但是Typescript文件(.TS)被編譯為Javascript文件(.JS)。 Typescript文件或生成的Javascript文件都不會以DLL結尾。 DLL僅包含服務器端代碼,而Typescript / Javascript是客戶端代碼。

因此,嘗試將ProductA項目中的引用添加到Framework項目中的DLL不會拉入Framework項目中的任何Typescript文件。

只要最終呈現的HTML頁面同時包含從ProjectA和Framework生成的Javascript的標簽,那么即使兩個項目之間沒有任何聯系,一切也可以正常工作。 如果您真正想要的是在ProjectA中使用Typescript進行編碼時針對Framework類的Visual Studio Intellisense,則應按照@WedneyYuri和@DavidSherret的建議進行操作,這是從Framework中添加.d.ts文件。項目添加到您的ProjectA項目中。

管理依賴關系

最簡單的解決方案是使用像bower這樣的包管理器:

在終端上:創建一個空文件夾並啟動一個空的Bower存儲庫:

$ bower init

對於每個定義文件,請使用以下命令:

$ bower install [URL] --save-dev

jQuery定義文件的示例

$ bower install https://raw.githubusercontent.com/borisyankov/DefinitelyTyped/master/jquery/jquery.d.ts --save-dev

多虧了Bower,您可以在此處使用任何URL。 有關更多信息,請訪問Bower文檔

匯編

創建一個文件(名稱並不重要)definitions.d.ts在您運行該命令的同一個文件夾$ bower init

對於每個已安裝的定義文件,必須在該文件中手動添加新行:

添加jQuery和angularjs之后的示例

/// <reference path="jquery.d/index.ts" />
/// <reference path="angular.d/index.ts" />

現在,在您的項目中,您只需要包含對definitions.d.ts文件的引用

運行代碼

為了使代碼正常工作,您需要.js文件。 在開發環境中,我使用Bower在單獨的文件夾中管理依賴項,並在html中手動添加.js文件。 在生產中,使用任何工具將它們串聯起來。

TSD(用於DefinitelyTyped的TypeScript定義管理器)

在不久的將來,程序包管理器將可以選擇從任何地方安裝模塊。 還沒有准備好,但這是一個目標。

TSD未來的目標是無縫支持任何來源的任何TypeScript定義文件。 默認情況下,您仍然應該能夠搜索絕對類型的存儲庫並從那里安裝。 但是,將把更多的精力放在支持獨立定義上,特別是與模塊捆綁在一起的定義上。 https://github.com/DefinitelyTyped/tsd/issues/150

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM