我有一个具有以下结构的打字稿nodejs服务器:
tsconfig.json
package.json
src/
middleware/
utils/
index.ts
dist/
middleware/
utils/
index.ts
使用Typescript 2时,我可以将项目从src /转换为dist /文件夹,并可以使用我的目录结构的镜像。
随着Typescript 3的发布,他们引入了project references,并改变了代码被转换为输出目录的方式。现在tsc
以这样的嵌套方式输出到dist /文件夹:
dist/
src/
middleware/
utils/
index.ts
我的tsconfig.json是:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"allowJs": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"resolveJsonModule": true,
"declaration": false,
"outDir": "dist/",
"lib": [
"es7",
"dom"
]
},
"include": [
"src/"
]
}
如何配置Typescript将src /文件夹作为镜像输出到dist /文件夹中?
答案 0 :(得分:4)
输出目录的结构由rootDir
的{{1}}控制。 See documentation here,将其设置为compilerOptions
应该可以解决问题。
./src
答案 1 :(得分:3)
最初转换为Typescript项目时,我遇到了类似的问题。我还设置了resolveJsonModule: true
,并将src
目录复制到了输出dist
目录。
根本原因是我的源文件之一require
在项目根目录下有package.json。一旦我删除了它,TSC便不再将src添加到dist目录中。
简而言之,请确保您不需要src目录之外的文件。
此处的解释性常见问题解答:https://github.com/Microsoft/TypeScript/wiki/FAQ#why-does---outdir-moves-output-after-adding-a-new-file
答案 2 :(得分:1)
除了指定 compilerOptions.outDir
外,还要在 compilerOptions.rootDir
中指定 tsconfig.json
。
{
"compilerOptions": {
// ...
"outDir": "dist",
"rootDir": "./",
// ...
}
}
然后在 $ tsc -b
文件所在的文件夹中运行:tsconfig.json
。
答案 3 :(得分:0)
从TypeScript 2升级到3本身不应该改变行为。如果我们可以确认确实如此,那可能是一个错误。无论如何,请检查rootDir
编译器选项是否指向您的src
目录而不是父目录,因为rootDir
下的结构就是{{1}下的镜像}。
答案 4 :(得分:0)
将resolveJsonModule: true
添加到tsconfig.json后出现问题
答案 5 :(得分:0)
您可以在 ./src 中的文件中从 src/entities/Post -> ../entities/Post 更改文件导入
这会更改 dist 文件夹中的导入。