当我的打印代码发布到npm时,如何处理d.ts文件
我一直在关注这篇文章:
如何创build强types的npm包
并一直试图设置我的打字稿项目发布到NPM。
这一切似乎都有道理,但没有涉及的是如何处理d.ts
文件。
我的项目看起来有点像这样:
src node server.ts browser client.ts common contracts.d.ts
所以当我用"declaration": true
编译这个"declaration": true
和"outDir: "dist"
我得到:
dist node server.js server.d.ts browser client.js client.d.ts
我的server.ts
文件和client.ts
文件都有
import {SomeType} from "../common/contracts";
所以当别人使用这个包的时候,typescript编译将会失败,因为server.d.ts
和client.d.ts
都会导入。
节点将运行正常,虽然client.js
和server.js
没有这个导入。 tsc
必须删除d.ts
文件的导入。
我想要发生的是将contracts.d.ts
文件作为构build的一部分复制到dist文件夹中。 我如何做到这一点,作为tsc
构build的一部分?
目前的解决方法
我目前正在做的事情是将我的contracts.d.ts
重命名为contracts.ts
,这意味着所有必需的文件都存在于dist文件夹中,但这意味着客户端和服务器都必须加载只包含空的contracts.js
文件
"use strict"; //# sourceMappingURL=contracts.js.map
我想我已经想出了一个很好的解决办法。 我已经将我的声明文件移动到合同文件夹中,所以我的项目如下所示:
src node server.ts browser client.ts dist node server.js server.d.ts browser client.js client.d.ts contracts common.d.ts
然后,我只是在npm包中包含合同文件夹,并使用../../contracts/common
导入文件。 这个path既可以在编译时从src文件夹中运行,也可以在构build这个软件包时从dist文件夹运行。
如果虽然合同只是types,我仍然会在.ts
文件中声明它们。 还是从其他地方产生合同?