tsup:一个新型 esbuild 驱动的 TypeScript 库打包工具(下)
原文链接:Create Your New Modern TypeScript/JavaScript Library With tsup,2022.11.15,by Christopher T.
自定义配置:通过 tsup.config.ts
当然我们还可以使用 tsup
做更多的事情——通过配置文件。tsup
在运行时会自动读取并名为 tsup.config.ts
的文件。我们创建一下这个文件,并添加以下内容:
import type { Options } from 'tsup' const config: Options = { // } export default config
通过这个配置文件,我们可以指示 tsup
编译器执行不同的操作。
例如,我们可以通过将 dts
设置为 true
来指示 tsup
生成 TypeScript 声明文件:
// tsup.config.ts
const config: Options = { entry: ['src/index.ts'], dts: true, }
对于这个设置,我们需要在项目中安装 TypeScript,否则会收到一个错误:
npm i --save-dev typescript
当我们再次运行 npm run build
时,tsup 就帮我们生成了一个额外的声明文件。

我们还可以生成源代码映射文件,以便在调试过程中生成更准确的堆栈跟踪(stack traces)信息:
tsup.config.ts

现在,客户端代码(client.js
)就能在 IDE(如 VS Code)中看到 TypeScript 类型提示了:

多格式输出
一个库的作者面临的问题是如何支持不同的客户端消费格式。目前有几种常见的格式:

中我们可以轻松地通过 format
字段配置,生成这三种格式。
执行后的打印输出:
执行后的打印输出:

目录结构:

在我们的 client.js
文件中,目前我们可以没有问题地使用我们的库。然而,为了让消费者导入与其项目所使用格式相对应的文件,我们需要编辑 package.json
为特定导入方式指向特定格式的文件。

关于 exports
的工作原理,超出了本篇文章的范围,有兴趣的同学,可以点击这里转到官方的 Node.js 文档进行查看。
发布 npm 包
现在我们已经介绍了创建一个最小化的现代 JavaScript/TypeScript 库所需的基本推荐要求!下一步,我们需要将我们的包发布到 npm 中央仓库中,方便三方用户可以通过 npm
安装我们的包。
为此,在 package.json
中添加一个 publishConfig
键,并将 access
字段设置成“public
”:
在终端中输入 npm publish
,你应该会看到类似于以下内容(将 my-typescript-library
替换成你的包名):

结束!
本文对应的代码仓库,可以点击这里(https://github.com/jsmanifest/my-typescript-library)查看。
总结
这篇文章到此结束!希望对你有帮助,谢谢!