tsconfig中是否可以将服务器和客户端编译为公用和专用文件夹?

时间:2019-12-23 18:55:25

标签: typescript tsc parcel

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

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

src
-server
-client

tsconfig
package.json 

我希望src / server编译为build中的私有文件夹,而src / client编译为公共文件夹。我使用Parcel作为使用tsc的编译器。所以我的问题是,可以使用单个tsconfig的编译器选项来完成此操作。因为我注意到您只能指定1个输出目录。还是我必须在服务器和客户端目录中创建2个tsconfig,然后以某种方式使用两者?

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

1 个答案:

答案 0 :(得分:0)

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

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

您将使用两个tsconfig:一个位于-72中,另一个位于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时,将创建每个子项目并将其放在各自的输出中。进出口就像所有项目都存在于一个项目中一样。

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