最近发布了@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的更多相关文章

  1. TS声明文件

    now我们来看一看TS怎么声明文件, 在JS里面我们经常会使用各种第三方类库,引入方式也不太相同,常见的就是在HTML中通过script标签引入,然后就可以使用全局变量$或者jQuery了 我们通常这 ...

  2. Linux下find一次查找多个指定类型文件,指定文件或者排除某类文件,在 GREP 中匹配多个关键 批量修改文件名等

    http://blog.sina.com.cn/s/blog_62e7fe670101dg9d.html linux下二进制文件查找: strings 0000.ts | grep -o " ...

  3. 各种类型文件的Content-Type

    各种类型文件的Content-Type 2017年11月27日 10:00:56 thebigdipperbdx 阅读数:7360   版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  4. 结合docker发布前端项目(基于npm包管理)的shell脚本

    结合docker发布前端项目(基于npm包管理)的shell脚本 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统 目前主流的前后端分离的项目中,常常在部署 ...

  5. Go+gRPC-Gateway(V2) 微服务实战,小程序登录鉴权服务(四):客户端强类型约束,自动生成 API TS 类型定义

    系列 云原生 API 网关,gRPC-Gateway V2 初探 Go + gRPC-Gateway(V2) 构建微服务实战系列,小程序登录鉴权服务:第一篇 Go + gRPC-Gateway(V2) ...

  6. 在文件夹中 的指定类型文件中 查找字符串(CodeBlocks+GCC编译,控制台程序,仅能在Windows上运行)

    说明: 程序使用 io.h 中的 _findfirst 和 _findnext 函数遍历文件夹,故而程序只能在 Windows 下使用. 程序遍历当前文件夹,对其中的文件夹执行递归遍历.同时检查遍历到 ...

  7. C#项目打开/保存文件夹/指定类型文件,获取路径

    C#项目打开/保存文件夹/指定类型文件,获取路径 转:http://q1q2q363.xiaoxiang.blog.163.com/blog/static/1106963682011722424325 ...

  8. VS2010 发布网站时文件丢失

      问题:使用VS发布网站时,发现一些Flv等文件丢失,没有发布到指定文件夹中. 解决办法:打开文件属性窗口,找到生成操作,选项选择“内容”即可. 详细内容可参考官方文档: http://msdn.m ...

  9. asp.net word ecxel类型文件在线预览

    asp.net word ecxel类型文件在线预览 首先得引用COM: Microsoft Excel 10 Object Library Microsoft Word 10 Object Libr ...

随机推荐

  1. Java设计模式:Factory Method(工厂方法)模式

    概念定义 工厂方法(Factory Method)模式,又称多态工厂(Polymorphic Factory)模式或虚拟构造器(Virtual Constructor)模式.工厂方法模式通过定义工厂抽 ...

  2. Java设计模式:Singleton(单例)模式

    概念定义 Singleton(单例)模式是指在程序运行期间, 某些类只实例化一次,创建一个全局唯一对象.因此,单例类只能有一个实例,且必须自己创建自己的这个唯一实例,并对外提供访问该实例的方式. 单例 ...

  3. redis设置、查看和校验密码

    Redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式(密码),可以通过编辑[redis.conf]配置文件来启用认证,这里简单介绍一下Redis中如何设置.查看和校验密码(登录验证和操 ...

  4. SpringBoot2.0.4部署在tomcat容器中

    1.  修改启动类继承自SpringBootServletInitializer. 2. 重写config方法: @Overrideprotected SpringApplicationBuilder ...

  5. 屏幕输入转换为int//方法大注释

    可以使用两种方法: using System; namespace 方法测试 { class Program { static void Main(string[] args) { Console.W ...

  6. String与StringBuilder性能比对

    //String与StringBuilder性能比对package seday01;/** * String修改字符串带来的性能开销 * @author xingsir * */public clas ...

  7. HTML常用标签三

    表格标签 表格的作用 表格主要用于显示.展示数据,因为他们可以让数据显示的非常规整,可读性非常好,特别是后台展示数据的时候,能够熟练运用表格就先的很重要,一个清爽简约的表格能够把繁杂的数据表现的很有条 ...

  8. SpringMVC入门 -- 参数绑定

    一.REST与RESTful 1.简介 (1)REST(Representational State Transfer):表现层状态转移,一种软件架构风格,不是标准.REST描述的是在网络中clien ...

  9. JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼?

    <JavaScript 深入浅出>系列: JavaScript 深入浅出第 1 课:箭头函数中的 this 究竟是什么鬼? JavaScript 深入浅出第 2 课:函数是一等公民是什么意 ...

  10. sql使用cte表达式进行递归查询

    --递归获取所有子节点 with temp as ( select * from MK_Base_Department where F_DepartmentId='5f258320-c1b7-42a4 ...