节点和浏览器的npm软件包的打字稿定义问题

时间:2019-02-15 19:26:31

标签: typescript npm webpack

我正在使用Webpack和Typescript创建一个可由节点和浏览器客户端使用的程序包。 对于我的包,例如MyPackage,我能够生成一个“ index.js”和“ browser.js”文件,其中index.ts / index.js具有与节点环境相关的代码,而browser.ts / browser.js具有与浏览器相关的代码码。我为此使用package.json的“浏览器”属性。

"browser":{
 "out/index.js" : "out/browser.js"
}

问题是我在打字稿环境下运行。因此,在节点客户端中,我可以很好地使用该库。这是因为(我认为),index.ts具有必需的类型定义。

import {MyNodeCode} from "MyPackage" (this works )

但是在浏览器客户端(角度应用程序)中,由于我要导入的类型在browser.ts中,打字稿编译失败。所以当我这样做

import {MyBrowserCode} from "MyPackage"

角度代码明显失败。

我在这里做错了什么吗?有没有一种方法可以对节点和浏览器环境进行不同的类型定义?我环顾了一段时间,但不幸的是找不到合适的答案。我已经提到https://nolanlawson.com/2017/01/09/how-to-write-a-javascript-package-for-both-node-and-the-browser/,但这似乎是一个本地js环境示例。

如果需要进一步说明,请告诉我。

0 个答案:

没有答案