从外部packabe中的嵌套文件夹导入TypeScript

时间:2019-05-10 10:51:46

标签: typescript

我正在工作,其中将包含几个独立的文件夹,如下所示:

/src
  /a
    ClassA1.ts
    ClassA2.ts
    index.ts   # Exports ClassA1 and ClassA2
  /b
    ClassB1.ts
    ClassB2.ts
    index.ts   # Exports ClassB1 and ClassB2

我想创建此程序包并将其发布到npm(假设它将称为my-package),并允许其他项目像这样导入这些项目:

import { ClassA1 } from 'my-package/a'
import { ClassB1 } from 'my-package/b'

我已经弄清楚了使用tsconfig编译TypeScript代码时如何保留文件夹结构,所以现在TypeScript编译的结果如下:

/dist
  /a
    ClassA1.d.ts
    ClassA2.d.ts
    index.d.ts
    ClassA1.js
    ClassA2.js
    index.js
  /b
    ClassB1.d.ts
    ClassB2.d.ts
    index.d.ts
    ClassB1.js
    ClassB2.js
    index.js

不幸的是,当我发布此程序包时,从此程序包导入类的唯一方法是这样的(请注意路径的 dist 部分):

import { ClassA1 } from 'my-package/dist/a'

与我希望的外观不同。

似乎我缺少一些简单的东西,但是我不知道如何解决导入路径。

这是我的tsconfig.json

{
  "compilerOptions": {
    "rootDir": "src",
    "target": "es6",
    "module": "commonjs",
    "strict": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "alwaysStrict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "esModuleInterop": true,
    "declaration": true,
    "outDir": "./dist",
    "moduleResolution": "node"
  },
  "include": ["src/**/*"]
}

1 个答案:

答案 0 :(得分:1)

NPM没有提供在NPM软件包中配置“模块根目录”之类的方法。因此,输出目录必须是程序包目录:

"outDir": "."