NPM模块+ TypeScript最佳实践

我想在TypeScript中编写一个npm模块。 有人可以推荐我一个最佳做法指导如何开始?

我的问题是:

  • Node.js不支持TypeScript,对吗? 那么推荐的方式是如何发布一个npm模块呢? 将2个文件夹/ ts / js和package.json引用到js / index.js作为入口点。 或者使用某种types的运行时转换器并直接运行TypeScript文件? 或者,不build议在npm模块中发布任何TypeScript代码,只是将其编译为普通的Javascript并在Git存储库中提供TypeScript源代码?

  • 键入支持的推荐方式是什么? 我看到我可以在我的package.json中引用打字文件。 他们可以在网上,我应该提供他们与npm模块或者应该ts和dtd文件根本不被发布? 安装他们typings并提供typings.json以及?

  • 如果我想为我的代码提供键入支持,build议如何执行此操作? 即使我的模块是非常小和简单(做一件事,做正确的)它可能是有用的提供一些信息和自动完成支持。 我还是新来的TypeScript,所以不知道什么是最好的办法做到这一点。 我会猜想写一个接口,并提供与我的NPM模块。 这些文件以后应该上传到DefinitelyTyped目录还是只为更大的图书馆感觉?

我很想在这里如何正确使用当前的TypeScript和Node Version来做到这一点,因为我发现的很多信息都是过时的,如autodts,tsd等。

我很高兴如果有人能帮助我。 只要我知道这是如何做的正确的方式,我会做一个文档,并提供这些信息在Github上的其他人。

干杯

对于你的第一个问题:是的,在发布你的npm包之前,你必须传输打字稿代码,但是你可以很容易地做到这一点,确保你在package.json中有这个:

"scripts": { "prepublish": "tsc", } 

构build文件的最佳做法是使用例如src目录作为您的ts文件,然后使用根级别或其他目录(例如dist)作为js文件。 你可以通过在你的tsconfig.json中定义“outDir”来设置它:

 "compilerOptions": { [...] "outDir": "dist" } 

在这里接受的答案中的链接帮助我解决了类似的问题: 在打字稿中编写NPM模块

至于你在npm包中键入的问题:为了在当前的打字稿版本中提供打字,你不需要改变你的package.json中的任何东西。 您只需将名为index.d.ts的文件添加到包的根级别即可。 如果有人使用你的模块打字稿会自动find那里打字。