【问题标题】:Typescript - how to only compile from one folderTypescript - 如何只从一个文件夹编译
【发布时间】:2019-06-28 09:37:34
【问题描述】:

我有一个类似这样的文件夹结构(数字表示深度):

1. project/
  2. package/
    3. dist/
    3. src/
      4. index.tsx
    3. tsconfig.json
1. test1/
  2. file1.tsx
1. test2/
  2. file2.tsx

project/package/src/index.tsx 中,我像这样导入测试文件:

import TestFile1 from "../../../test1/file1"
import TestFile2 from "../../../test2/file2"

这是因为我正在创建一个 npm 包,并且我希望能够从项目根目录导入配置文件(即文件夹结构将变为 root/node_modules/packagescope/package,而不是 root/node_modules/packagescope/package,我想从root 目录导入test1/file1test2/file2)。

在开发包的过程中,我有一些测试文件用作临时替换,但我不希望在编译时将这些文件添加到dist 文件夹中。我希望能够对这些文件进行类型检查以确保没有错误,但我不希望它们被编译。我基本上想要一个适用于仅编译的“排除”选项。

想要发生的是,当我运行tsc 时,它会编译project/package/src 中的文件并将其输出到project/package/dist。所以编译后应该有文件project/package/dist/index.js

我遇到的问题是,如果我将 rootDir 设置为 project/package/src 文件夹,我会收到错误消息:

error TS6059: File 'C:/.../test1/file1.tsx' is not under 'rootDir' 
'C:/.../project/package/src'. 'rootDir' is expected to contain all source files.

如何让它工作?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    它编译 project/package/src 中的文件并将其输出到 project/package/dist。所以编译后,我应该有文件 project/package/dist/index.js

    您必须将所有 src 放入 src。将test 移动到src 然后.npmignore dist/test

    示例

    TypeStyle 是一个开源示例:https://github.com/typestyle/typestyle/tree/master/src/tests?

    【讨论】:

    • 我不能把它全部放在 project/package/src 中,因为那样会破坏我的导入。它们需要位于它们所在的位置。我也不希望它们编译到 project/package/dist 中,因为它们仅用于在开发期间进行测试。它们不是分发文件。
    • They aren't distribution files. 如果您将它们添加到忽略文件,它们将不会被分发。 I can't put it all in project/package/src though as that would break my imports 如果您不更改导入,TypeScript 将必须使文件夹结构匹配。因此,如果您想要 src -> dist 的输出文件夹结构,您必须匹配输入,也就是将所有文件放入 src ?
    • 无法更改导入。这些文件不能添加到 src 文件夹中。感谢您的帮助,但不幸的是它没有回答我的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-12-26
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 2015-06-04
    • 1970-01-01
    • 2019-08-12
    相关资源
    最近更新 更多