这篇文章主要介绍如何发布一个npm包,这个过程并不复杂,学完之后你可以发布任何你喜欢的代码到npm网站上,之后你可以使用npm命令安装在其他项目中。

发布到npm网站之前,你必须在npm网站上创建一个你自己的账号,这是网站的网址:https://www.npmjs.com/。

然后本地登陆,在命令行中输入命令:·npm adduser ,会通过提问的方式依次输入用户名密码和邮箱。

Username: 用户名Password: 密码Email: (this IS public) 邮箱

现在你已经登陆了,我们可以开始创建一些文件发布到npm上。选择一个空的文件夹,通过 npm init 进行初始化,这里也会通过提问的方式进行配置仓库的信息。

1、name 。包名。

2、description 。包简介。

3、version 。版本号。

4、keywords 。关键词数组,NPM中主要用来做分类搜索。一个好的关键词数组有利于用户快速找到你编写的包。

5、maintainers 。包维护者列表。

6、contributors 。贡献者列表。

7、bugs 。一个可以反馈 bug 的网页地址或邮件地址。

8、licenses 。当前包所使用的许可证列表,表示这个包可以在哪些许可证下使用。(比较宽松的许可证是 MIT 许可证,只要用户在项目副本中包含了版权声明和许可声明,他们就可以拿你的代码做任何想做的事情,你也无需承担任何责任。)

9、repositories 。托管源代码的位置列表,表明可以通过哪些方式和地址访问包的源代码。

10、dependencies 。使用当前包所需要依赖的包列表。

{  "name": "is-promise-function",  "version": "1.0.0",  "description": "判断传入的参数是promise函数",  "main": "./index.js",  "scripts": {    "test": "jest"  },  "repository": {    "type": "git",    "url": "https://github.com/wuxianqiang/isPromise.git"  },  "author": "wuxianqiang",  "license": "MIT",  "devDependencies": {    "@types/jest": "^25.2.3",    "jest": "^26.0.1"  }}

现在我写一个方法判断传入的参数是否是一个promise对象,具体代码如下:

function isPromise(obj) {  return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';}module.exports = isPromise

代码很简单,判断传入的对象上是否有then属性即可。写完代码之后执行命令 npm publish 进行发布到npm网站上,发布之前确保你使用的 npm 源是指向 npm 网站的。

作为模块和包服务的工具,NPM十分便捷。它实质上已经是一个包共享平台,所有人都可以贡献模块并将其打包分享到这个平台上,也可以在许可证(大多是MIT许可证)的允许下免费使用它们。

潜在的问题在于,在NPM平台上,每个人都可以分享包到平台上,鉴于开发人员水平不一,上面的包的质量也良莠不齐。出现问题那都是有可能的。

4 月 25 日,一个名为 is-promise 的 npm 库进行了更新并发布了 v2.2.0 版本,没想到这一次更新却使 JavaScript 生态陷入危机,据媒体报道,目前已有数百万个项目受到了影响,而事件的始作俑者竟是一个仅仅“单行”的 JavaScript 库。

考量包质量的地方在于包中的测试用例和文档的状况,一个没有单元测试的包基本上是无法被信任的,没有文档的包,使用者使用时内心也是不踏实的。

所以我们该有的还是要有,都给它安排上,单元测试我们使用 jest 这个第三方库,把它安装到开发依赖里面去。

npm install @types/jest jest -D

在package.json里面添加运行的脚本

{  "scripts": {    "test": "jest"  }}

然后创建一个名为qs.spec.js的文件,里面写测试代码:

var isPromise = require('./index')var promise = {then: function () {}};it('测试{then: function () {}}是promise函数', () => {  expect(isPromise(promise)).toBeTruthy()})it('测试100不是promise函数', () => {  expect(isPromise(100)).not.toBeTruthy()})

在编写测试时,通常需要检查值是否满足某些条件。Expect使你可以访问许多“匹配器”(比如toBeTruthy 匹配 if 语句为真),从而使您可以验证不同的内容。

之前配置了运行脚本,然后现在执行命令npm run test可以生成测试报告,查看本次测试的内容结果。

单元测试也写了,现在就差一个说明文档,创建一个README.md文件,描述这个包的主要功能即可。

一个优秀的第三方包应该具备以下特点

1、具备良好的测试。

2、具备良好的文档(README、API)。

3、具备良好的测试覆盖率。

4、具备良好的编码规范。

npm 查看登陆账号_发布第一个npm包相关推荐

  1. npm 查看登陆账号_自定义npm 及问题整理

    由于在项目中 经常自己在一个项目中打包依赖,另一个项目中需要引用自己打包的依赖,所以需要自己提交一个npm 可安装的包,以免CV大法(粘贴复制) 以下是步骤 在npm 官网上自己注册一个账号 [注册地 ...

  2. cad布局教程_发布,一个好用的CAD原生批量打印功能

    点击上方 "CAD自学网 "  → 点击右上角"..." → 点选"设为星标 ★ " 为CAD自学网加上星标,即可及时收到干货啦! 左下角阅 ...

  3. mysql 查看登陆记录_查看用户登录记录

    有关用户登录的信息记录在 utmp(/var/run/utmp).wtmp(/var/log/wtmp).btmp(/var/log/btmp) 和 lastlog(/var/log/lastlog) ...

  4. 从零开始发布自己的NPM包

    大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan02 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  5. 怎么开发一个npm包

    一.注册npm账号 * 怎么将代码提到github,大家都知道需要一个github账号 * 同样,开发一个npm包,当然也需要一个npm账号,将npm包发布到npm的托管服务器 * 注册地址:[htt ...

  6. webpack创建library及从零开始发布一个npm包

    最近公司有个需求,我们部门开发一个平台项目之后,其他兄弟部门开发出的插件我们可以拿来直接用,并且不需要我们再进行打包,只是做静态的文件引入,研究一波后发现,webpack创建library可以实现. ...

  7. java撤销删除_[Java教程]利用npm安装/删除/发布/更新/撤销发布包

    [Java教程]利用npm安装/删除/发布/更新/撤销发布包 0 2017-06-10 00:00:32 一.什么是npm? npm是javascript的包管理工具,是前端模块化下的一个标志性产物 ...

  8. 【Npm】如何发布一个npm包?

    前端日常开发经常会通过 npm install安装一些包,那这些包都是怎么发布的呢? 接下来让我们动手发布一个自己的npm 包. windows系统下演示: 步骤一.注册npm账号 首先我们需要在np ...

  9. 如何开发一个npm包并发布

    一.安装nodejs 不多说了,网上教程多得是 二.创建自己的npm包 目录结构 npm-test a.js b.js package.json 开发 为了简单便于理解,就开发一个简单地hello程序 ...

最新文章

  1. python urllib.request 爬虫 数据处理-python爬虫之json数据处理
  2. OS中阻塞与挂起的区别sleep()的实现原理
  3. 多线程使用SO_REUSEPORT来实现多个socket监听同一个端口
  4. 限制不能使用最近三次的历史密码
  5. python flask框架教程_Flask框架从入门到实战
  6. 【技术解决方案】开发工具源码安装包大全
  7. ruby 生成随机字符串_Ruby程序生成随机数
  8. 【VB.NET】测验题目Quiz3
  9. 前端开发 容器标签span与div 0228
  10. 如何使用Mediawiki搭建个人wiki系统、以及wiki的部分基本操作和设置
  11. Status code :200 OK (from disk cache)
  12. 笔记本换SSD固态硬盘,系统速度可以提升吗?
  13. C++实现字符串去掉前后的空格
  14. 计算机加减乘除的公式,Word表格函数公式,轻松搞定加减乘除
  15. WiFi DFS(动态频率选择)
  16. 基于Android的共享单车系统的设计与应用
  17. 阿里暑期实习生面试经验-数据分析岗位
  18. 有水印的图片简直不要太尬!教你去水印,以后精美图片统统拿走!
  19. 四川省建设厅关于推行建筑工人实名制管理工作的通知〔2018〕613号
  20. 8通道温度采集器工作特性介绍

热门文章

  1. python程序安装包_Python-软件安装包以及安装教程
  2. NetworkManager nmcli connection add 221025笔记
  3. git-将分支合并到主分支
  4. 梅州组织培养实验室之室内布局建设
  5. 攻防世界-web2(逆向加密算法)
  6. EMAS 移动 DevOps 解决方案 —— Mobile DevOps
  7. rs485与modbus流程图_基于Modbus协议的RS485总线通讯机设计原理及应用
  8. 解决MacBook Pro键盘背光不亮问题的办法
  9. 直接利用解压工具替换SpringBoot打好的Jar包
  10. 科技云报道:云计算走向工业互联网“深水区”