tsconfig.json - 仅从文件夹构建ts文件

Mic*_*ook 12 typescript

我目前正在尝试将我的ts文件构建为单个ts文件.我得到的问题是我的代码不符合我的想法.我使用sourceRoot尝试设置唯一可以获取源的地方但是没有用.我也尝试过放一个.面前的目录,但它仍然从各处拉出来:(

{
   "compilerOptions": {
       "target": "ES5",
       "noImplicitAny": true,
       "removeComments": true,
       "preserveConstEnums": true,
       "out": "www/js/app.js",
       "sourceMap": true,
       "sourceRoot": "www/app"
   }
}
Run Code Online (Sandbox Code Playgroud)

所有文件,包括那些不在www/app build内的文件:(

现在我已经回到手动指定文件:

{
    "compilerOptions": {
        "target": "ES5",
        "noImplicitAny": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "out": "www/js/app.js",
        "sourceMap": true
    },
    "files": [
        "./www/app/app.ts",
        "./www/app/menu/menuController.ts",
        "./www/app/playlists/playlistsController.ts"
    ]
}
Run Code Online (Sandbox Code Playgroud)

是否可以将源目录限制为仅限www/app?

谢谢

Eug*_*hel 15

对的,这是可能的.请使用rootDirlike 'rootDir': 'app',如果www是您的应用程序的根目录.

rootDir来自typescript编译器选项的描述:

指定输入文件的根目录.

  • 当然,@迈克尔克鲁克.只是关于"out"的说明这个选项已被弃用.现在建议使用`outFile`.请参阅https://github.com/Microsoft/TypeScript/wiki/Compiler-Options (4认同)

TSV*_*TSV 11

根据tsconfig 架构:

"如果tsconfig.json中没有'files'属性,编译器默认包含包含目录和子目录的所有文件.当指定'files'属性时,只包含那些文件."

"如果tsconfig.json中没有'files'属性,但存在'exclude'属性,编译器将排除'exclude'属性中指定的文件和文件夹."

根据描述:

"files"属性不能与"exclude"属性一起使用.如果两者都指定,则"files"属性优先.

问题"在tsconfig.json文件属性(或只是文件/目录排除)支持水珠"反映了当前的局面.


for*_*d04 10

这个问题有点老了,我知道。但是这里提到的一些 TypeScript 编译器选项不一定有助于解决问题。对于搜索rootDir或类似的人(像我一样),澄清提到的和解决方案相关的选项可能会有所帮助。

将所有文件发送到一个文件中

? 用outFile

? 不要使用out(已弃用)

背景:

如果要构建到目标目录,请选择outDir. 有关更多信息,请参阅编译器选项

只从某个目录发出文件

? 使用files/ include/exclude在tsconfig

? 不要使用rootDir

解释:

编译器通过以下方式找到所有输入文件

  • 看着 file/ include/exclude性能
  • 以下import陈述
  • 跟随 ///<reference .. />(应该不再那么重要了)

如果未指定这些选项,则将包含 TypeScript 项目根目录(由 tsconfig.json 提供)中的所有文件。该import编辑模块自动由编译器包括,无论file/ include/ exclude -看看他们的常见问题。合并的所有输入文件是它将构建的文件的信封。如何配置file/ include/exclude见tsconfig.json文档,也可以考虑@ TSV的答案。

根目录

rootDir与 一起控制输出目录结构outDir,它用于指定编译器输入。它的用法是(引用):

对于每个输入文件(即 .ts/.tsx 文件),它需要生成匹配的输出(.js/.jsx 文件)。要找出生成的输出文件的文件路径,它将从输入中切掉“rootDir”,然后在其前面加上“outDir”。

因此rootDir需要一个包含上面所有输入源的目录,否则你会得到

错误 TS6059:文件不在“rootDir”下..“rootDir”应包含所有源文件

如果rootDir省略,编译器会通过考虑手头的所有输入文件自动计算合适的目录。所以不一定要设置。

源根

此选项仅与源映射/调试相关,可以在问题范围内省略。当您的源文件在运行时与设计时位于不同位置时,将使用它。编译器将调整源映射文件中源的路径以匹配运行时的路径(编译器选项)。

希望,这可以澄清一些事情。


小智 5

rootDir用于控制输出目录结构。

输出目录结构将类似于您的rootDir目录。您可以使用glob-like file patterns来限制您的源目录:

* matches zero or more characters (excluding directory separators)
? matches any one character (excluding directory separators)
**/ recursively matches any subdirectory
Run Code Online (Sandbox Code Playgroud)