【问题标题】:Adding files references in typescript在打字稿中添加文件引用
【发布时间】:2019-03-08 16:56:30
【问题描述】:

我在一个带有子文件夹的文件夹中有一个 lib,有一些打字稿文件,其中一些依赖于其他子文件夹中的其他文件。

我想包含其中一些文件,就像它在另一个项目中的本地文件一样。 Visual Studio 中提供了类似的功能(添加参考文件/文件夹),但无法使用 typescript/vscode 重现。

尝试了多种方式,例如直接导入和使用 tsconfig(路径、包含、引用项目等),但所有这些方式都存在问题。 我结束了符号链接,但不是最好的解决方案。

要明确一点:

  • 我不想在每个子文件夹库中都有 node_module/typings
  • 我不想要每个子文件夹库的预编译项目
  • 我只想要另一个文件夹中的文件,就像项目中的本地文件一样

提前致谢

Demo Repository

【问题讨论】:

  • 我也打算建议符号链接,但听起来你已经得出了这个结论。你考虑过using local modules as npm package depencies吗?
  • 您的问题不清楚。请提供文件结构示例。
  • 感谢@Wex,npm链接我试过一次,但是和webpack有些冲突,在其他环境下安装变得复杂,更何况文件需要用他的模块编译,等等。也许我要求太多了...... :)

标签: typescript visual-studio-code tsconfig


【解决方案1】:

如果我理解正确,"rootDirs" 听起来就像你想要实现的那样。

使用'rootDirs',你可以告诉编译器组成这个“虚拟”目录的根;因此编译器可以解析这些“虚拟”目录中的相关模块导入,就像在一个目录中合并在一起一样。


编辑:这是对您的配置的更新,以允许您的 node_moduleslib 文件夹中的项目共享。请注意,您需要将 tsconfig 移动到这两个文件夹共享的父目录,例如根项目目录:

        "baseUrl": ".",
        "paths": {
            "*": ["app/node_modules/*"]
        },
        "rootDirs": [
            "app/src",
            "lib",
        ]

【讨论】:

  • 是的,试过了,但是如果尝试打开文件(打开符号等),它会抱怨缺少类型。我有时能够使代码工作,但编译器开始到处抛出错误,因为缺少模块(外部模块)、类型和依赖项。在 Visual Studio(没有 vscode)中,可以添加一个文件,就像它存在于本地目录中一样,至少在 .net 语言中是这样。
  • 添加了 demo 存储库。如果你在 src 中打开索引并 ctrl+单击 Comp 标签,它将打开文件并抱怨缺少反应模块。
  • 需要注意的几件事:1) 如果您在app 文件夹中添加npm install,您的react 错误就会消失。 2) 您实际上可以使用当前的rootDirs 设置来执行import { Comp } from "./comp";(这就是我说的意思,它让您感觉lib/component 文件夹被视为本地文件夹)。跨度>
  • 同样,如果您将rootDirs 更改为['src', '../lib'],您的导入将更改为import { Comp } from "./component/comp";
  • 再次感谢 Wex。我遵循了您的指南,并且能够以不同的方式导入,并且我已经使用 npm install 安装了 react 模块,但仍然收到有关 comp.tsx 中缺少反应的错误。 Typescript 可能会生成有效代码(即使出现错误),但会一直看到 comp.tsx 文件所在的位置,以及未安装任何模块的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 2018-04-14
  • 2021-09-19
  • 2017-03-19
  • 2018-06-14
  • 1970-01-01
相关资源
最近更新 更多