如何配置 tsconfig.json 将多个源文件夹中的文件输出到单个 flat outDir?
How to configure tsconfig.json to output files from multiple source folders to single flat outDir?
我有多个打字稿项目(例如client
和server
),它们共享一些通用功能(位于common
文件夹中).考虑这个文件夹结构:
+ client
| - tsconfig.json
| + src
| - client.ts
+ common
+ src
- util.ts
其中 client.ts
以这种方式导入实用程序:
import { Util } from '../../common/src/util';
为简洁起见,我省略了 server
文件夹,它与 client
处于同一级别。转译到 out
文件夹后,我想得到这个简单的平面文件夹结构:
+ client
| + out
| - client.js
| - util.js
...理想情况下,我可以简单地导入与实际文件夹无关的通用实用程序:
import { Util } from './util';
如何配置 tsconfig.json
来实现?
我尝试了 rootDirs
、baseUrl
和 paths
的不同组合,但我仍然得到 client
和 common
子文件夹(甚至包括他们的 src
子文件夹)在 out
.
下
到目前为止,你不能。
我的情况与您的情况类似,我环顾四周,但似乎无法通过 TypeScipt 配置更改此行为。
你能做的最好的事情就是在每次构建后使用其他东西(一个 Grunt 任务,一个 shell 脚本,...)来移动 js 文件并删除生成的文件夹。
我已经解决了我当前项目(具有相同设置)中的这个问题,方法是将 link 放入两个源的公共库中。
common/
src/
lib/
client/
src/
lib/ -> $PROJECT_PATH/common/src/lib/
server/
src/
lib/ -> $PROJECT_PATH/common/src/lib/
编译和捆绑变得透明,因为工具将该目录视为本地目录。
现在我们在 Typescript 3.0 中支持项目引用(即多个 Typescript 项目的级联构建)。我们还可以控制 tsc
构建的输出位置。
https://blogs.msdn.microsoft.com/typescript/2018/07/30/announcing-typescript-3-0/#project-references
如果 Typescript 项目 'bar' 使用 项目 'foo',请按以下方式链接它们:
// ./src/bar/tsconfig.json
{
"compilerOptions": {
// Needed for project references.
"composite": true,
"declaration": true,
// Other options...
"outDir": "../../lib/bar",
"strict": true, "module": "esnext", "moduleResolution": "node",
},
"references": [
{ "path": "../foo" }
]
}
谢谢各位TS大佬!
我有多个打字稿项目(例如client
和server
),它们共享一些通用功能(位于common
文件夹中).考虑这个文件夹结构:
+ client
| - tsconfig.json
| + src
| - client.ts
+ common
+ src
- util.ts
其中 client.ts
以这种方式导入实用程序:
import { Util } from '../../common/src/util';
为简洁起见,我省略了 server
文件夹,它与 client
处于同一级别。转译到 out
文件夹后,我想得到这个简单的平面文件夹结构:
+ client
| + out
| - client.js
| - util.js
...理想情况下,我可以简单地导入与实际文件夹无关的通用实用程序:
import { Util } from './util';
如何配置 tsconfig.json
来实现?
我尝试了 rootDirs
、baseUrl
和 paths
的不同组合,但我仍然得到 client
和 common
子文件夹(甚至包括他们的 src
子文件夹)在 out
.
到目前为止,你不能。
我的情况与您的情况类似,我环顾四周,但似乎无法通过 TypeScipt 配置更改此行为。
你能做的最好的事情就是在每次构建后使用其他东西(一个 Grunt 任务,一个 shell 脚本,...)来移动 js 文件并删除生成的文件夹。
我已经解决了我当前项目(具有相同设置)中的这个问题,方法是将 link 放入两个源的公共库中。
common/
src/
lib/
client/
src/
lib/ -> $PROJECT_PATH/common/src/lib/
server/
src/
lib/ -> $PROJECT_PATH/common/src/lib/
编译和捆绑变得透明,因为工具将该目录视为本地目录。
现在我们在 Typescript 3.0 中支持项目引用(即多个 Typescript 项目的级联构建)。我们还可以控制 tsc
构建的输出位置。
https://blogs.msdn.microsoft.com/typescript/2018/07/30/announcing-typescript-3-0/#project-references
如果 Typescript 项目 'bar' 使用 项目 'foo',请按以下方式链接它们:
// ./src/bar/tsconfig.json
{
"compilerOptions": {
// Needed for project references.
"composite": true,
"declaration": true,
// Other options...
"outDir": "../../lib/bar",
"strict": true, "module": "esnext", "moduleResolution": "node",
},
"references": [
{ "path": "../foo" }
]
}
谢谢各位TS大佬!