使用 TypeScript 编写 npm 包跟 使用 JavaScript 编写 npm 包本质上是没有什么区别的。但是如果你正好搜索到这篇文章,说不定会对你所帮助。
创建项目
我们要创建的包是一个叫做 thatis
的包。因为在使用 JS 写代码时,经常需要判断某一个对象是不是某一种类型的。这个包就是用来收集一些常用的判断方法的。
- 创建项目目录
thatis
- 进入项目目录,使用
npm init
初始化,一路默认即可,后面再修改。 - 使用
tsc --init
添加tsconfig.json
完善项目,发布项目
代码见:
https://github.com/banxi1988/that-is/tree/v1.0.0
增加集成测试
- 打开 travis-ci
- 使用 GitHub 账号登录。
- 找到
that-is
项目,选择开启。 - 添加
.travis.yml
配置文件,commit
,push
然后即可在 travis-ci 网站上看到测试状态。
language : node_js
node_js :
- stable
- "lts/*"
install:
- npm install
script:
- npm test
使用 istanbul 进行覆盖测试
- 安装
- 在
package.json
的"scripts"
部分 中添加执行脚本:
"cover": "istanbul cover node_modules/mocha/bin/_mocha test/*.js - - -R spec"
- 然后
npm run cover
执行。可以看到类似下面的输出:
=============================================================================
Writing coverage object [/Users/banxi/Workspace/that-is/coverage/coverage.json]
Writing coverage reports at [/Users/banxi/Workspace/that-is/coverage]
=============================================================================
=============================== Coverage summary ===============================
Statements : 62.5% ( 30/48 )
Branches : 16.67% ( 4/24 )
Functions : 73.33% ( 11/15 )
Lines : 62.5% ( 30/48 )
================================================================================
详细的说明在 coverage
目录中
➜ that-is (master) ✗ tree coverage
coverage
├── coverage.json
├── lcov-report
│ ├── base.css
│ ├── dist
│ │ ├── index.html
│ │ └── index.js.html
│ ├── index.html
│ ├── prettify.css
│ ├── prettify.js
│ ├── sort-arrow-sprite.png
│ └── sorter.js
└── lcov.info
2 directories, 10 files
打开其中的 index.html
即可查看详细的报告说明。
报告看起来是这样的:
说明 isNumber
这个方法没有测试到。
将覆盖测试数据上传到 coveralls
- 使用 GitHub 账号登录到 coveralls
- 找到
that-is
仓库将其中的开关开启。 - 安装
coveralls
工具npm i coveralls -D
- 修改
.travis.yml
添加 上传测试覆盖率数据到coveralls
的脚本。
language : node_js
node_js :
- stable
- "lts/*"
install:
- npm install
script:
- npm run cover
# Send coverage data to Coveralls
after_script: "cat coverage/lcov.info | node_modules/coveralls/bin/coveralls.js"
网友评论