【问题标题】:How can I reference typescript files without absolute paths?如何在没有绝对路径的情况下引用打字稿文件?
【发布时间】:2014-11-08 22:32:03
【问题描述】:

由于打字稿doesn't seem to support absolute path references,我看不出如何保持我的参考文献整洁。我的文件夹结构中的许多不同位置都有 ts 文件,并且必须非常小心我的意思是 ..\Scripts\typings\jquery\jquery.d.ts 还是 ..\..\Scripts\typings\jquery\jquery.d.ts 似乎真的很笨拙。

是否有任何方法来指定根引用文件夹,这样我就不必指定相对于当前文件路径的所有路径,每个文件夹都不同?

【问题讨论】:

  • <reference path="c:/users/josh/node-samples/typings/jquery/jquery.d.ts" /> 这样的路径应该可以工作。您链接到的问题显示为已修复(我确认它有效)。
  • 嗯,这比草率的引用要好,但是硬编码目录结构意味着我的文件系统中的位置嵌入在文件中,这会在其他机器上中断。当然 Typescript 应该支持根相对路径,即/Scripts/typings/...
  • 不幸的是,它不支持每个文件都可以独立编译成 JavaScript 文件这样的事情,因此没有明确定义的根路径位置。团队非常善于听取github上的反馈。
  • 为什么它的编译方式很重要,因为这些参考仅用于设计时?

标签: visual-studio typescript


【解决方案1】:

目前无法指定要在引用中使用的 root 文件夹。

绝对文件路径确实有效,但通常与多个开发人员沟通的路径维护使得这对于许多 TypeScript 开发项目来说可能是一个非首发。

例如,CodePlex 上有 discussions 表达了类似的请求(但没有解决方案)。由于 TypeScript 文件是独立的,因此有些人担心向编译器引入类似“项目”的方案。

一些开发人员会将最常用的引用放在一个文件中(例如,_references.d.ts)并在其中列出对定义文件的引用。然后,该文件将被其他 TypeScript 文件引用。它简化了,但并没有完全消除问题(因为您仍然需要使用可能会弹出 N 级目录的相对文件引用):

/// <references path="../../../_references.d.ts." />

根据您拥有的文件数量和定义的大小,您可能会发现,由于文件是单独编译的,因此编译过程将花费更长的时间(因为它会从_references.d.ts 文件中提取可能未使用的定义)。 (例如,如果您在 IDE 中激活了“保存时编译”)。

【讨论】:

  • 我不确定 Typescript 通常应该如何工作,但在我看来,Visual Studio 可以覆盖工具来识别绝对路径,也许使用常见的 ~/ASP.NET 约定。有什么理由不这样做?
  • TypeScript 编译器单独发布......对 TSC 编译器进行了适当的调整,是的,~/defs/etc.d.ts 可以工作。
  • 在 Visual Studio 中,如果至少通过 nuget 下载 .d.ts 文件,则不需要包含引用。这很棒,但它使您只能使用一个 IDE。
  • 拥有如此复杂的参考系统使得 TS 项目对每个人来说都不是初学者。我的意思是,他们已经可以构建图表了,为什么还需要那些愚蠢的不合逻辑的引用。
  • @GuardianX - 对于“每个人”来说,这几乎不是不适合的。我几乎不再使用引用了。事实上,当我迁移到 TypeScript 2.0 时,我的大部分代码都没有使用它们。假设您有可用的声明,使用 import 就足够了。
【解决方案2】:

为了保持您的相对路径引用整洁,请在 你的 tsconfig.json

首先安装 tspath 一个用于解析 ts 路径的 npm 工具 注意:tspath 需要最新版本的节点!

npm install -g tspath

接下来,为 tsconfig.json 添加路径别名

"baseUrl": "./",
  "paths": {
    "@Scripts/*": ["./Scripts/typings/jquery/*"],
    "@Plugins/*": ["./MyPlugins/V2/*"]
  }

现在在引用您的脚本时使用您的别名

@Scripts/jquery
@Plugins/myPlugin

运行 TypeScript 编译器后,从项目目录运行:

tspath

tspath -f

跳过提示!

阅读更多:https://www.npmjs.com/package/tspath

希望这是你想要的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2019-09-07
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    相关资源
    最近更新 更多