我有一个具有以下结构的项目
project
├── client
│ └── src
│ ├── index.js
│ ├── and.js
│ ├── some.js
│ ├── other.js
│ └── files.js
├── public
├── server
│ ├── out
│ │ ├── index.js
│ │ └── any.other.dependency.js
│ ├── src
│ │ ├── index.ts
│ │ └── foo.js
│ └── templates
├── shared
│ └── constants.js
└── mutliple.config.files.json
我的目标是拥有一个内部包含所有服务器逻辑的服务器server/src
,它提供不同的 html 文件server/templates
。我希望服务器代码使用 Typescript,编译后的输出应该转到server/out
.
还有应用程序的客户端,位于client/src
。那里的逻辑足够复杂,我决定使用 webpack 进行捆绑。我什至可能会在将来添加一些反应。所有这些代码都是由 webpcak 编译的,生成的文件位于/public
.
我还在客户端和服务器逻辑之间共享一些常量,我决定将它们放入./shared
。我将来可能想在其中添加一些实用程序,所以我们假设它不仅仅是常量。
在未来的某个时候,我想将整个项目迁移到 TS,但我还没有接近这个目标。
我如何使用 Typescript 来实现这一目标?
我已经解决了 webpack 方面的问题。我的问题出在 TS 编译器上。我无法让它工作,因为共享已经过时了compilerOptions.outDir
,但是如果我将其设置为整个项目文件夹,我最终会得到一个疯狂的结果server/out
文件夹结构。就像是server/out/server/src/index.js
My tsconfig.json
看起来像这样:
{
"extends": "@tsconfig/node12/tsconfig.json",
"include": ["server/src/*", "shared/*"],
"exclude": ["node_modules"],
"compilerOptions": {
"allowJs": true,
"noImplicitAny": false,
"outDir": "./server/out/",
"rootDir": "./server/src"
},
}