发布TS类型文件到npm
最近发布了@types/node-observer包到npm,这里记录下发布过程
TS类型文件的包名通常以@types开头,使用npm publish发布以@types开头的包时需要使用付费账号。

我们无需自己注册付费账号,可以将自己的代码merge到开源项目DefinitelyTyped中,然后发布到npm上。
DefinitelyTyped
fork仓库DefinitelyTyped,拉取到本地(项目比较大,拉下来比较耗时)添加自己的代码、提交,然后创建Pull requests。勾选Pull requests模板中的选项:

发起Pull requests,会走一个CI流程,这个阶段耗费时间比较长,不知道是不是因为有墙的原因。期间出现几个错误记录记录如下:
index.d.ts头部解析错误
index.d.ts头部模板可参考:dt-header。这里出现两个错误:
Error: Could not parse version: line is '// TypeScript Version: 3.3.3' Error parsing header. Expected: foo MAJOR.MINOR (patch version not allowed). See: https://github.com/Microsoft/dtslint/blob/master/docs/dt-header.md
这两个错误属于同一类,注释中只能使用主版本号.次版本号不能使用补丁版本号。修改后如下:

文件格式错误
.d.ts和.ts文件末尾要空一行

代码错误
export = observer;等号两边要有空格:

const obj = new Demo();这一行最初写的是let obj = new Demo();,报ERROR: 9:5 prefer-const Identifier 'obj' is never reassigned; use 'const' instead of 'let'.错误。
类定义Demo的方法sayHello不能使用public修饰符,否则报ERROR: 4:5 member-access 'public' is implicit.错误。
消除所有错误后,会交由人工处理merge,完成merge后就会发布到npm了。
小结
以上是自己合并代码到主分支时遇到的错误,解决问题花费时间不算太长,倒是花费了大量时间等待CI结果。整体感觉,CI流程对文件内容的格式要求很严格。代码的提交、合并的详细流程可以点击此处查看:#40450,所有的构建历史记录可以在此处查看。

发布TS类型文件到npm的更多相关文章
- TS声明文件
now我们来看一看TS怎么声明文件, 在JS里面我们经常会使用各种第三方类库,引入方式也不太相同,常见的就是在HTML中通过script标签引入,然后就可以使用全局变量$或者jQuery了 我们通常这 ...
- Linux下find一次查找多个指定类型文件,指定文件或者排除某类文件,在 GREP 中匹配多个关键 批量修改文件名等
http://blog.sina.com.cn/s/blog_62e7fe670101dg9d.html linux下二进制文件查找: strings 0000.ts | grep -o " ...
- 各种类型文件的Content-Type
各种类型文件的Content-Type 2017年11月27日 10:00:56 thebigdipperbdx 阅读数:7360 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...
- 结合docker发布前端项目(基于npm包管理)的shell脚本
结合docker发布前端项目(基于npm包管理)的shell脚本 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统 目前主流的前后端分离的项目中,常常在部署 ...
- Go+gRPC-Gateway(V2) 微服务实战,小程序登录鉴权服务(四):客户端强类型约束,自动生成 API TS 类型定义
系列 云原生 API 网关,gRPC-Gateway V2 初探 Go + gRPC-Gateway(V2) 构建微服务实战系列,小程序登录鉴权服务:第一篇 Go + gRPC-Gateway(V2) ...
- 在文件夹中 的指定类型文件中 查找字符串(CodeBlocks+GCC编译,控制台程序,仅能在Windows上运行)
说明: 程序使用 io.h 中的 _findfirst 和 _findnext 函数遍历文件夹,故而程序只能在 Windows 下使用. 程序遍历当前文件夹,对其中的文件夹执行递归遍历.同时检查遍历到 ...
- C#项目打开/保存文件夹/指定类型文件,获取路径
C#项目打开/保存文件夹/指定类型文件,获取路径 转:http://q1q2q363.xiaoxiang.blog.163.com/blog/static/1106963682011722424325 ...
- VS2010 发布网站时文件丢失
问题:使用VS发布网站时,发现一些Flv等文件丢失,没有发布到指定文件夹中. 解决办法:打开文件属性窗口,找到生成操作,选项选择“内容”即可. 详细内容可参考官方文档: http://msdn.m ...
- asp.net word ecxel类型文件在线预览
asp.net word ecxel类型文件在线预览 首先得引用COM: Microsoft Excel 10 Object Library Microsoft Word 10 Object Libr ...
随机推荐
- idea 方法注释live template
groovyScript("def result=''; def params="${_1}".replaceAll('[\\[|\\]|\\s]', '').split ...
- javascript实现base64编码、解码
我们知道,浏览器的window对象提供有window.atob()和window.btoa()方法可以对字符串进行Base64编码和解码. console.log(window.btoa(window ...
- Elastic:使用Heartbeat进行Uptime监控
Elastic:使用Heartbeat进行Uptime监控 Elastic在6.5的版本中推出Heartbeat.Heartbeat 也就是我们通常所说的心跳.我们知道在医院,医生是用听心跳来判断一个 ...
- Dynamics CRM中的注释(Note)及RollupRequest消息初探
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复161或者20151015可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 注释,这个实体的架构名称是Ann ...
- 如何优雅地停止Spark Streaming Job
由于streaming流程序一旦运行起来,基本上是无休止的状态,除非是特殊情况,否则是不会停的.因为每时每刻都有可能在处理数据,如果要停止也需要确认当前正在处理的数据执行完毕,并且不能再接受新的数据, ...
- Python的 Datetime 、 Logging 模块
Datetime模块 datetime是python处理时间和日期的标准库 类名 date类 日期对象,常用的属性有 year . month . day time类 时间 ...
- Ubuntu18.04安装配置
GPT硬盘安装Ubuntu 磁盘管理工具压缩一个5GB的Fat32的分区,然后将ISO文件解压到Fat32分区 利用Hasleo EasyUEFI工具添加EFI引导 *:\EFI\BOOT\grubx ...
- vue全局路由守卫beforeEach+token验证+node
在后端安装jsonwebtoken npm i jsonwebtoken --save 在 login.js文件中引入 // 引入jwtconst jwt = require ...
- 初学JavaScript正则表达式(四)
字符类 [] 一般情况下正则表达式中一个字符对应字符串一个字符 可以使用元字符 [ ] 来构建一个简单的类 类泛指符合某些特征的对象 例: 'a1b1c1d1'.replace(/[ab ...
- vue-router 之 keep-alive路由缓存处理include+exclude
keep-alive 简介 keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染. 用法也很简单: <keep-alive> <compone ...