TypeScript NPM包的目标体系结构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeScript NPM包的目标体系结构相关的知识,希望对你有一定的参考价值。

我正在研究TypeScript中的一些NPM包,我想知道支持不同目标体系结构的最佳方法。

如果您编译到ES3,您将获得最广泛的支持,但也有额外的兼容性样板(大小,部分无法解析)。如果你的目标是esnext,你基本上没有样板(干净的输出代码!),但支持非常有限。

问题是TypeScript编译器通常不会从node_modules转换JS代码或任何代码。因此,如果你是编译一个库到ES6,有人想在他们的浏览器应用程序中使用它(针对ES3或ES5),然后他们将无法使用该库。

这里的最佳做法是什么?我应该如何配置我的package.jsontsconfig.json?如果图书馆用户需要做某事,这里的首选方式是什么?

非常感谢!

答案

我认为可以妥协。对我来说,在库中使用es6的主要原因是 - 支持汇总的树摇动。为此,package.json有选项module

"main": "dist/alina-core.js",
"module": "dist/alina-core-es.js",

当用户使用汇总时,无论如何都需要在树摇动后转换到ES5,因此,在module中指定了ES6版本。但是如果库用户使用旧的构建管道,他将获得main编译的ES5版本。

以上是关于TypeScript NPM包的目标体系结构的主要内容,如果未能解决你的问题,请参考以下文章

npm 包的可安装 typescript 类型定义

自定义npm包——typeScript版本

私有 Typescript 库作为 npm 依赖项

从 npm 包的子文件夹导入

vue组件库用@vue/cli构建typescript版UI库 -安装常用npm包配置脚本

带有本地 npm 包的 Snowpack