我有一个打字稿项目,并且我具有以下文件结构
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
以下内容需要至少打字稿版本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
项目以获取完整示例。