Tsconfig 和 outDir 问题

Tsconfig and outDir issue

我在 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"

玩得开心!

一个或多个文件使用 "outDir":"./dist"

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

我也希望保持我的源目录中没有中间构建文件,同时仍然使用 TypeScript 将我的代码捆绑到一个文件中,而不是需要 shell 输出到第 3 方实用程序,例如 webpack, parcel 或 rollup,然后将其所有输出组合到一个文件中,但遗憾的是,(目前)不是这样。

(但是,要在不同的目录中简单地生成捆绑输出,是的,outFile: "subdir/bundle.js" 就可以了。)

致所有寻找从模块而不是 module/dist/Anything

导入的方法的人

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

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

- project
|- package.json

|- app
||- package.json
||- ...

|- api
||- package.json
||- ...

|- shared
||- package.json
||- tsconfig.json
||- index.ts
||- src
|||- MySharedResource.ts
|||- MySharedSomething.ts
...

(shared是一个npm包,本地安装在api和app中) 我希望能够使用简单的方式从共享中导入内容 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 中的 index.ts 旁边有另一个文件(在本例中为 Thing.ts),其中包含以下内容:

export * from "./src/Task";

注2

你也可以这样做

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