我想在TypeScript中编写一个npm模块。 有人可以向我推荐一本如何入门的最佳实践指南吗?
我的问题是:
Node.js不支持开箱即用的TypeScript,对吧?那么如何发布npm模块的推荐方法呢?将2个文件夹/ ts / js和package.json引用为js / index.js作为入口点。或者使用某种运行时转换器并直接运行TypeScript文件?或者是否不建议在npm模块中发布任何TypeScript代码并将其编译为普通的Javascript并在Git存储库中提供TypeScript源?
键入支持的推荐方法是什么?我看到我可以在我的package.json中引用打字文件。他们可以在线,我应该提供npm模块,还是ts和dtd文件根本不发布?用typings安装它们并提供typings.json?
如果我想为我的代码提供打字支持,建议的方法是什么?即使我的模块非常小而且简单(做一件事并且做得对)提供一些信息和自动完成支持可能很有用。我还是TypeScript的新手,所以不确定最好的方法是什么。我猜想编写一个接口并提供我的npm模块。这些文件以后是否应该上传到DefinitelyTyped目录,还是仅针对较大的库感知?
我很想知道如何使用当前的TypeScript和Node Version正确地完成它,因为我发现很多信息都是过时的,参考了autodts,tsd等等。
如果有人可以帮助我,我很高兴。我很快就知道如何以正确的方式完成文档并在Github上为其他人提供这些信息。
干杯
答案 0 :(得分:4)
关于你的第一个问题:是的,你必须在发布你的npm包之前转换打字稿代码,但是你可以通过确保在package.json中有这个来轻松地完成这个:
"scripts": {
"prepublish": "tsc",
}
结构化文件的最佳做法是使用例如ts文件的src目录,然后是js文件的根级别或另一个目录(例如dist)。您可以通过在tsconfig.json中定义“outDir”来设置它:
"compilerOptions": {
[...]
"outDir": "dist"
}
此处接受的答案中的链接也帮助我提出了类似的问题:Writing NPM modules in Typescript
关于你在npm包中输入的问题:为了提供当前打字稿版本的输入,你不需要在package.json中更改任何内容。您只需将名为index.d.ts的文件添加到程序包的根级别即可。如果有人使用你的模块打字稿会自动找到那里的打字。