tsconfig 中是否有一个选项可以将服务器和客户端编译到 public 和私有文件夹?

Is there an option in the tsconfig to compile a server and client to a public and private folder?

我有一个打字稿项目,我有以下文件结构

builds
-dev
--public
--private
-production
--public
--private

src
-server
-client

tsconfig
package.json 

我希望我的 src/server 编译到构建中的私有文件夹,src/client 编译到 public 文件夹。我使用 Parcel 作为使用 tsc 的编译器。所以我的问题是,这可以通过单个 tsconfig.json 的编译器选项来完成吗?因为我注意到你只能指定 1 个输出目录。或者我是否必须在服务器和客户端目录中创建 2 个 tsconfigs 并以某种方式同时使用两者?

我能找到的所有示例都是使用 Webpack 完成的,我真的很想使用 Parcel。 Server & client-side TypeScript project organization, compilation

以下内容需要至少 打字稿版本 3.0 才能创建复合构建。

https://www.typescriptlang.org/docs/handbook/project-references.html

您将使用两个 tsconfig:一个在 src/server 中,一个在 src/client 中;您还需要一个根 tsconfig.json.

在根目录中,您需要:

"references": [{
    "path": "./src/client"
}, {
    "path": "./src/server"
}]

然后在 src/client/tsconfig.json 中您将需要以下内容:

"compilerOptions": {
    "outDir": "../../builds/dev/public",
    "rootDir": ".",
    "composite": true
}

server 执行相同的操作。

现在,当您从根目录 运行 tsc --build 时,每个子项目都将被构建并放置在各自的输出中。导入和导出将像所有内容都存在于一个项目中一样工作。

有关完整示例,请参阅 project-references-demo 项目。