我在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 文件所在的目录中。有人找到解决这个问题的方法吗?
实际上,我发现了问题所在。我认为这很有趣:在outFile
中指定文件路径和文件名就足够了,而无需使用 outDir
.因此,在这种情况下,这将是:
"outFile":"dist/App.js"
祝你好!
不幸的是,TypeScript(至少从3.3版本开始(不能同时支持outDir
和outFile
。
我也想保持我的源目录没有中间构建文件,同时仍然使用 TypeScript 将我的代码捆绑到一个文件中,而不是需要掏出给 3rd 方实用程序,如 webpack、parcel 或 rollup,然后将其所有输出合并到一个文件中,但唉,这是(目前(不是。
(但是,要简单地在不同的目录中生成捆绑的输出,是的,outFile: "subdir/bundle.js"
工作得很好。
对于一个文件或多个文件,请使用"outDir":"./dist">
对于任何寻找从模块而不是模块/dist/Anything导入的方法的人
我找到了一个相当简单的解决方案
首先,我的文件夹结构看起来像这样
- project
|- package.json
|- app
||- package.json
||- ...
|- api
||- package.json
||- ...
|- shared
||- package.json
||- tsconfig.json
||- index.ts
||- src
|||- MySharedResource.ts
|||- MySharedSomething.ts
...
(共享的是 API 和应用程序中本地安装的 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"
注1
您可以为每个文件导出多个内容,但是如果您想进行这样的导入
import { Thing } from 'shared/Thing';
然后,您需要在/shared 中的 index.ts
旁边有另一个文件(在本例中为 Thing.ts
(,其中包含以下内容:
export * from "./src/Task";
注2
你也可以这样做
export * as Thing from "./src/Thing";