如何编写一个TypeScript库
文章目录
编写模块化的代码是一个非常不错的想法,没有比编写一个库更加模块化了。那要如何编写一个TypeScript库呢?这就是本文的意图,本文的代码可以运行在TypeScript 2.x 3.x和4.x上。
第一步∶设置tsconfig.json
创建一个项目目录,本文目录名称为 typescript-library
,然后在这个目录下面添加配置文件 tsconfig.json
文件内容类似于下面这样:
typescript-library/tsconfig.json
|
|
这跟平常配置一个一般的项目差不多,唯一需要强调的一点就是,需要添加 "declaration": true
字段。有了这个配置,编译后的代码会生成以 .d.ts
结尾的文件,这些文件里面会包含代码里面的类型。如果别人在使用你写的代码,他们就会从TypeScript的类型系统中获得自动补全的好处,类型安全的好处。
关于其他选项,让我们快速浏览一下:如果你想让你的代码与大多数当前的node.js应用程序无缝运行,那么"module": "commonjs"
模块编译器选项是必需的。如果你正在构建一个面向浏览器的库,那么请将其替换为"module": "esnext"
。"target": "es2015"
指定你的代码将被转译成哪个版本的JavaScript。这需要与你想要支持的最旧的node.js版本(或最旧的浏览器)保持一致。将编译目标选择为es2015
可以使你的库与node.js版本8及以上版本兼容。"outDir": "./dist"
将把你编译后的文件写入到dist文件夹中,"include"
选项指定你的源代码存放位置。
第二步:实现你的库
就像你不写库代码,同样的方式。创建一个src文件夹,把你的所有库源代码(程序逻辑,数据,资产)都放在这个目录。
为了这个demo,我们将写一个不太实用的hello-world.ts
文件,看起来像这样:
typescript-library/src/hello-world.ts
|
|
第三步:创建一个 index.ts 文件
在您的src
文件夹中添加一个index.ts
文件。它的目的是导出您希望供消费者使用的库的所有部分。在我们的例子中,它只是:
typescript-library/src/index.ts
|
|
消费者以后可以像这样使用库:
someotherproject/src/somefile.ts
|
|
你看到我们有一个新的名字叫做“hwrld”,我们还没有在任何地方见过。这是什么名字呢?这是你要发布到npm的库的名字,也叫做包名!
第四步:配置 package.json
包名是消费者以后用来从您的库中导入功能的。 对于此demo,我选择了hwrld
,因为它仍然可以在npm上使用。 包名通常位于package.json
的顶部。 整个package.json
看起来如下:
typescript-library/package.json
|
|
如果你还没有一个包,你可以使用npm init
来创建一个,它会指导你完成整个过程。记住,你选择的包名将被人们用于他们的imports,所以要明智地选择!
在 package.json
中还有一项非常重要的标志:您必须声明在哪里找到类型声明! 这是通过 "types": "dist/index.d.ts"
来完成的,否则消费者将无法找到您的模块!
最后一个属性files
可以帮助您包含想要发布到npm的文件。 这通常比使用 .npmignore
文件更容易更安全。因为具体指定了这个库会发布的文件及目录列表
|
|
现在您已经准备就绪! 通过运行可以在任何地方消费您的库:
|
|
下面是如何调用
|
|
对于后续发布,请使用semvar原则。当您对库进行补丁/错误修复时,可以运行npm version patch
,对新功能运行npm version minor
,对api的重大更改运行npm version major
。