如何写一个 TypeScript 库

第 1 步:初始化一个 Node.js 项目

在本教程中,演示类库包名为 sample-library

npm init

初始化生成的 package.json 看起来像这样:

// sample-library/package.json
{
  "name": "sample-library",
  "version": "1.0.0",
  "description": "Can log \"hello world\" and \"goodbye world\" to the console!",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "files": [
    "/dist"
  ]
}

注意

package.json 中的types选项,用作声明在哪里可以找到声明文件,否则使用者将找不到您的模块!

第 2 步:设置 tsconfig.json

在项目根目录下创建 tsconfig.json 文件,如下所示:

//  sample-library/tsconfig.json
{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es2015",
    "declaration": true,
    "outDir": "./dist"
  },
  "include": [
    "src/**/*"
  ]
}

选项说明:

  • “declaration”:true :这将生成包含代码类型的.d.ts文件(也称为声明文件)。如果有人正在使用你的库,并且他们也使用 TypeScript,那么他们将获得类型安全和自动完成的好处!

  • “module”:“commonjs”:为 node.js 应用程序构建库。如果要为浏览器构建库,请将“commonjs”替换为“esnext”

  • “target”:“es2015” 指定代码将被转译到哪个版本的JavaScript。选择es2015作为编译目标使你的库兼容 node.js 8及更高版本。

  • “outDir”:“./dist” 将编译文件写入dist文件夹;

  • include 选项指定源代码所在的位置。

第 3 步:实现你的库

创建一个src文件夹,并将库的所有源文件(应用程序逻辑、数据等)放在里面。

在这个演示中,我们设置一个简单的 hello-word.ts 文件,如下所示:

// sample-library/src/hello-world.ts
export function sayHello() {
  console.log('hi')
}
export function sayGoodbye() {
  console.log('goodbye')
}

第 4 步:创建 index.ts 文件

添加 index.ts 文件到src文件夹。它的目的是导出类库中,所有公开给使用者使用的内容,如下所示:

// sample-library/src/index.ts
export {sayHello, sayGoodbye} from './hello-world'

然后使用者可以像这样使用该库:

// otherproject/src/somefile.ts
import {sayHello} from 'sample-library'
sayHello();

第 5 步:发布到npm

发布第一个版本到npm,请运行:

tsc
npm publish

对于后续更新发布,可以参照以下原则

  • 当你对库进行修补程序/错误修复时,可以运行 npm version patch,
  • 对于新功能,运行 npm version minor,
  • 在api发生更改时,运行 npm version major。

以上教程包含构建和发布工作库所需的所有步骤。