Tsconfig和outDir问题

时间:2016-02-08 13:36:22

标签: typescript tsconfig

我在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文件所在的目录中。有人找到了解决这个问题的方法吗?

4 个答案:

答案 0 :(得分:0)

实际上,我发现了问题所在。我觉得它非常有趣:它足以在outFile中指定文件路径和文件名,而不使用outDir。所以,在这种情况下,这将是:

"outFile":"dist/App.js"

有一个好的!

答案 1 :(得分:0)

对于一个或多个文件使用“outDir”:“。/ dist”

答案 2 :(得分:0)

不幸的是,TypeScript(至少从3.3版开始)不同时支持outDiroutFile

我也想保持源代码目录中的中间构建文件的清洁度,同时仍然使用TypeScript将我的代码捆绑到一个文件中,而不是需要打包到第三方工具(例如webpack,parcel或汇总)将其所有输出合并到一个文件中,但是可惜,(目前)没有。

(不过,只需在不同的目录中生成捆绑输出,是的,outFile: "subdir/bundle.js"就可以了。)

答案 3 :(得分:0)

对于任何正在寻找从模块而不是模块/dist/Anything 导入方法的人

我找到了一个相当简单的解决方案

首先,我的文件夹结构看起来像这样

- 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.tsMySharedSomething.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 中的 Thing.ts 旁边有另一个文件(在本例中为 index.ts),其中包含以下内容:

export * from "./src/Task";

注意事项 2

你也可以这样做

export * as Thing from "./src/Thing";