NPM 模块 + TypeScript 最佳实践
Posted
技术标签:
【中文标题】NPM 模块 + TypeScript 最佳实践【英文标题】:NPM Modules + TypeScript Best Practices 【发布时间】:2016-10-05 00:10:00 【问题描述】:我想用 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.json?
如果我想为我的代码提供打字支持,推荐的方法是什么?甚至我的模块都非常小且简单(做一件事并正确完成),提供一些信息和自动完成支持可能很有用。我还是 TypeScript 的新手,所以不确定最好的方法是什么。我猜想写一个接口并将它与我的 npm 模块一起提供。以后这些文件应该上传到DefinitelyTyped 目录还是只对较大的库有意义?
我很想在这里了解如何正确使用当前的 TypeScript 和 Node 版本,因为我发现的很多信息都已过时,涉及 autodts、tsd 等内容。
如果有人可以帮助我,我很高兴。一旦我知道这是如何以正确的方式完成的,我就会制作文档并在 Github 上为其他人提供这些信息。
干杯
【问题讨论】:
你最好把它分成 3 个单独的问题 【参考方案1】:对于您的第一个问题:是的,您必须先转换 typescript 代码,然后才能发布您的 npm 包,但您可以通过确保在您的 package.json 中有此非常轻松地做到这一点:
"scripts":
"prepublish": "tsc",
构建文件的最佳实践是使用例如ts 文件的 src 目录,然后是 js 文件的根级别或其他目录(例如 dist)。您可以通过在 tsconfig.json 中定义“outDir”来进行设置:
"compilerOptions":
[...]
"outDir": "dist"
这里接受的答案中的链接也帮助我解决了类似的问题:Writing NPM modules in Typescript
关于您在 npm 包中输入的问题:为了在当前 typescript 版本中提供输入,您无需更改 package.json 中的任何内容。您只需将名为 index.d.ts 的文件添加到包的根级别即可。如果有人使用你的模块打字稿会自动找到那里的打字。
【讨论】:
以上是关于NPM 模块 + TypeScript 最佳实践的主要内容,如果未能解决你的问题,请参考以下文章
在2018年如何优雅的开发一个typescript语言的npm包?