我在tsconfig.json中遇到了outDir问题。
我有以下tsconfig文件:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"outDir": "dist",
"outFile": "App.js"
},
"exclude": [
"node_modules",
"local_typings"
]
}
文件被编译为App.js,但不在我指定的目录(dist)中,而是在tsconfig文件所在的目录中。有人找到了解决这个问题的方法吗?
答案 0 :(得分:0)
实际上,我发现了问题所在。我觉得它非常有趣:它足以在outFile
中指定文件路径和文件名,而不使用outDir
。所以,在这种情况下,这将是:
"outFile":"dist/App.js"
有一个好的!
答案 1 :(得分:0)
对于一个或多个文件使用“outDir”:“。/ dist”
答案 2 :(得分:0)
不幸的是,TypeScript(至少从3.3版开始)不同时支持outDir
和outFile
。
我也想保持源代码目录中的中间构建文件的清洁度,同时仍然使用TypeScript将我的代码捆绑到一个文件中,而不是需要打包到第三方工具(例如webpack,parcel或汇总)将其所有输出合并到一个文件中,但是可惜,(目前)没有。
(不过,只需在不同的目录中生成捆绑输出,是的,outFile: "subdir/bundle.js"
就可以了。)
答案 3 :(得分:0)
我找到了一个相当简单的解决方案
首先,我的文件夹结构看起来像这样
- project
|- package.json
|- app
||- package.json
||- ...
|- api
||- package.json
||- ...
|- shared
||- package.json
||- tsconfig.json
||- index.ts
||- src
|||- MySharedResource.ts
|||- MySharedSomething.ts
...
(shared 是本地安装在 api 和 app 中的 npm 包)
我希望能够使用简单的方式从共享中导入内容
import { MySharedResource } from "shared";
这样做的方法是从 MySharedResource.ts
和 MySharedSomething.ts
export interface MySharedResource {
...
}
然后像这样从 index.ts
导出它:
export * from "./src/MySharedResource";
export * from "./src/MySharedSomething";
/shared 中的 tsconfig.json
应将 outDir 选项设置为 ./dist
(例如),以便将 index.ts
编译为 /shared/dist/index.js
并且所有其他内容都被编译到 /shared/dist/src 中。
此外,在您的 package.json
集中:
"main":"dist/index.js"
您可以为每个文件导出多个内容,但如果您想导入这样的内容
import { Thing } from 'shared/Thing';
然后您需要在 /shared 中的 Thing.ts
旁边有另一个文件(在本例中为 index.ts
),其中包含以下内容:
export * from "./src/Task";
你也可以这样做
export * as Thing from "./src/Thing";