教你30秒发布一个TypeScript包到NPM的方法步骤

 更新时间:2019年07月22日 10:09:44   作者:savokiss  
这篇文章主要介绍了教你30秒发布一个TypeScript包到NPM的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

文章读译自The 30 second guide to publishing a typescript package to npm,部分内容有修改哈。

这篇文章要求你有一定的 JS 、TS 和 NPM 的知识,如果你写过普通的 NPM 包就更好啦~如果没有的话网上也很多教程的,都很简单~

发布过 npm 包的同学都知道,初始化一个 npm 项目,直接用 npm init -y 就可以了,那如果要用 ts 呢,直接 tsc --init 即可。这两个操作会生成 package.json 和 tsconfig.json 文件。然后我们按以下步骤修改一下配置:

1. 添加 "declaration": true 到你的 tsconfig.json

这行语句告诉 TypsScript 在编译的时候为你自动生成 d.ts 文件。需要注意的是,当你使用私有的类型时,但是这个类型也外部 API 的一部分,这个包的使用者就得不到该类型的类型推断,TS 编译器也会报警告,这时你只需要在该类型前添加 export 即可。

2. 添加 "types": "index.d.ts" 到你的 package.json

当其他人导入你的包的时候,这句话就告诉了 TS 编译器到哪里去寻找类型定义文件。这里的 .d.ts 文件和 main 入口指向的是一个文件夹,所以通常情况下,你的 package.json 会包含下面两行:

"main": "dist/index.js",
"types": "dist/index.d.ts"

(上面默认你在 tsconfig.json 中配置的 outDir 指向的是 dist 目录)

3. 保证你的 dist 目录被添加到了 .gitignore

在我们的代码仓库,一般不需要包含编译后的代码,只需要包含源码即可。所以我们不对 dist 目录做版本管理。并且这也不影响我们发布 dist 目录到 npm。

4. 运行构建命令

运行 tsc 即可编译所有的源码。这非常方便,通常情况下,我们可以添加一条命令到 package.json:

"build": "tsc"

5. 运行 npm publish

接下来就是要发布到 npm 了,在 package.json 添加以下命令:

"release": "tsc && npm publish"

笔者习惯使用 standard-version 配合 commitizen 来发布 npm 包,感兴趣的同学可以自行了解一下~

如果想要在发布前调试本地包,可以使用 npm link 命令,在此项目根目录执行npm link, 然后在要调试的 demo 项目中执行 npm link <your package name>,然后在代码中直接引入使用即可。

下面是完成配置后的 package.json:

{
  "name": "my-ts-lib",
  "version": "1.0.0",
  "description": "My npm package written in TS",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "scripts": {
    "build": "tsc",
    "release": "tsc && npm publish"
  },
  "author": "savokiss",
  "license": "MIT",
  "devDependencies": {
    "typescript": "^3.5.3"
  }
}

下面是最终的 tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "lib": ["es2017", "es7", "es6", "dom"],
    "declaration": true,
    "outDir": "dist",
    "strict": true,
    "esModuleInterop": true
  },
  "exclude": ["node_modules", "dist"]
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 不到200行 JavaScript 代码实现富文本编辑器的方法

    不到200行 JavaScript 代码实现富文本编辑器的方法

    这篇文章主要介绍了不到200行 JavaScript 代码实现富文本编辑器的方法,需要的朋友可以参考下
    2018-01-01
  • countup.js实现数字动态叠加效果

    countup.js实现数字动态叠加效果

    这篇文章主要为大家详细介绍了countup.js实现数字动态叠加效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • javascript 新闻标题静态分页代码 (无刷新)

    javascript 新闻标题静态分页代码 (无刷新)

    一个模板,从数据库取n条记录,生成静态。做单页面的静态化,索引页面是用JS对数组进行组合的。
    2010-03-03
  • JSON.stringify实例详解以及灵活运用

    JSON.stringify实例详解以及灵活运用

    在向服务器发送数据时一般是字符串,我们可以使用 JSON.stringify()方法将JavaScript对象转换为字符串,下面这篇文章主要给大家介绍了关于JSON.stringify及灵活运用的相关资料,需要的朋友可以参考下
    2022-03-03
  • Next.js应用转换为TypeScript方法demo

    Next.js应用转换为TypeScript方法demo

    这篇文章主要为大家介绍了Next.js应用转换为TypeScript方法demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • JS拖拽组件学习使用

    JS拖拽组件学习使用

    这篇文章主要为大家介绍了JS拖拽组件的开发过程,以及如何正确使用JS拖拽组件,做到举一反三,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • JavaScript实现简单的拖拽效果

    JavaScript实现简单的拖拽效果

    这篇文章主要为大家详细介绍了JavaScript实现简单的拖拽效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • JavaScript判断数组是否存在key的简单实例

    JavaScript判断数组是否存在key的简单实例

    下面小编就为大家带来一篇JavaScript判断数组是否存在key的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • js实现倒计时时钟的示例代码

    js实现倒计时时钟的示例代码

    本篇文章主要是对js倒计时时钟的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • 在uniapp中实现中英文切换的方法

    在uniapp中实现中英文切换的方法

    最近使用uniapp做了个APP,由于客户是巴西的,所以使用中文已经满足不了客户需求了,本打算直接使用英文开发算了,老板非要做成可以中英文切换的,没办法只能开干,需要的朋友可以参考下
    2023-11-11

最新评论