前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >发布TS类型文件到npm

发布TS类型文件到npm

作者头像
雪飞鸿
发布2019-11-21 14:23:03
1.5K0
发布2019-11-21 14:23:03
举报
文章被收录于专栏:me的随笔me的随笔

最近发布了@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。这里出现两个错误:

代码语言:javascript
复制
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,所有的构建历史记录可以在此处查看

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DefinitelyTyped
    • index.d.ts头部解析错误
      • 文件格式错误
        • 代码错误
        • 小结
        相关产品与服务
        访问管理
        访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档