假设我已经编写了一个名为 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 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
会奏效。 但这是理想的解决方案吗?我可以提供一种方法,使包裹用户不必自己弄清楚缺少什么吗?
答案 0 :(得分:0)
但这是理想的解决方案吗?
是。直到rx.js在其.d.ts
文件旁边附带.js
个文件 right 。