我有一个打字稿项目,并且具有以下文件结构
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
答案 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
项目。