在npm的打字稿中打包环境模块的正确方法

时间:2016-03-07 19:53:52

标签: typescript npm typescript1.8

假设我已经编写了一个名为 get-subject 的npm包,其源代码为src/index.ts,如下所示:

import { ReplaySubject } from 'rx';

export default function getSubject() {
  return new ReplaySubject(1);
}

我有package.json:

"main": "lib/index.js",
"typings": "lib/index.d.ts",

和tsconfig.json:

{
    "compilerOptions": {
        "module": "commonjs",
        "moduleResolution": "node",
        "target": "es5",
        "outDir": "lib"
    },
    "files": [
      "src/index.ts",
      "node_modules/rx/ts/rx.all.d.ts"
    ]
}

现在我运行tsc -d并在lib/生成文件:

lib/index.js
lib/index.d.ts

lib/index.d.ts看起来像

import { ReplaySubject } from 'rx';
export default function getSubject(): ReplaySubject<{}>;

使用npm包“get-subject”作为依赖

的时间

做正常npm i。使用get-subject包写了一些代码:

import getSubject from 'ts-npm-package';

getSubject()

但是当我运行tsc时,它会告诉我:

node_modules/get-subject/lib/index.d.ts(1,31): error TS2307: Cannot find module 'rx'.

如果我在tsconfig.json的node_modules/rx/ts/rx.all.d.ts属性中包含get-subject(我使用npm @ 3,因此Rx依赖关系不嵌套在files下)。 tsc会奏效。 但这是理想的解决方案吗?我可以提供一种方法,使包裹用户不必自己弄清楚缺少什么吗?

1 个答案:

答案 0 :(得分:0)

  

但这是理想的解决方案吗?

是。直到rx.js在其.d.ts文件旁边附带.js个文件 right