如何发布一个npm包

546 阅读3分钟

注册

  1. 要发布一个npm包,注册账号自然是必不可少的,去npm官网注册

使用命令行登录npm

  1. 在登录之前,需要确保npm注册的源指向官方的地址,不然自己创建的npm包是发布不上去的使用npm config get registry,查看注册源的地址。
    npm config get registry
    输出: https://mirrors.cloud.tencent.com/npm/
  1. 在这个时候我们就需要切换为npm官方的源,这里推荐下nrm,这是一个包管理器源管理器,可以帮助你快速切换注册源。
    cnpm i -g nrm //全局安装nrm
    nrm ls  // 查看所有可用的源
    nrm test //查看各个源的速度
    nrm use 源名 //切换注册的源

这里使用nrm use npm 切换到官方的源

  1. 这样就可以用命令行登录了
    //使用下面这两个命令皆可登录
    npm addUser
    npm login

按照提示输入用户名、密码、注册的邮箱

对了,如果你之前注册的官方源是http://registry.npmjs.org/这种的话,npm是不会让你登录上去的,需要将源切换为https://registry.npmjs.org/,这个时你就可以使用nrm注册带有安全加密的官方源

还有输入以上两个命令之后,会出现以下提示

image.png

这时你就需要把npm发到你邮箱里的OTP,复制到命令行里,这样才能真正地登录上去,登录成功提示如下:

Logged in as xxx on https://registry.npmjs.org/.

编写代码

  1. 创建package.json,可以自己手动创建,当然也可以使用npm init或者 npm init -y创建, y标识能够让你快速创建一个package.json文件。
    "name": "@fire-t/tiny", //名字是必须的
    "version": "2.0.0", //版本号也是必须的
    "description": "remove all spaces from a string",
    "license": "MIT",
    "repository": "rujptw/tiny",
    "main": "index.js",
    "keywords": [
        "tiny",
        "npm",
        "package",
        "fire-t"
    ]
}
  1. 各项的意义
  • name:你要发布的包的名字,像@fire-t/tiny就是作用域包,作用域包能防止和npm上已存在的包重名,发布必需
  • version:版本号 发布必需,版本号也有讲究,例如 2.0.0,2就代表是主版本,这个是不向后兼容的;第一个0就代表小版本,这个是向后兼容的;最后一个0是代表补丁版本,是修复bug的。可以查看语义化版本,了解更多。
  • description:包的描述是做什么的。
  • license:协议
  • repository:仓库,这个仓库是指向github上的仓库,所以不要写错,不然npm上就不能跳转到github上对应的仓库了
  • main:主文件,入口文件
  • keywords:关键字,方便在npm上搜索到

当然这些只是一部分,更多可以去 深入浅出package.jsonnpm文档了解

  1. 主文件代码:index.js
//去除字符串中的空白符号
module.exports = function tiny(string){
    if(typeof string !== 'string') throw new TypeError("Tiny want a string!")
    return string.replace(/\s/g,"");
}

发包

  1. 使用npm publish发包,但这个只是针对公共的包,例如tiny,而@fire-t/tiny是作用域包,npm会认为它是一个私有包,如果想要让这个包成为公共包,需要使用npm publish --access=public

发包成功截图 这样就算发包成功了,这样之后下次发包就可以直接使用npm publish了,因为npm已经确认这个包是公共包,链接如下:tiny

创建仓库和更新包

  1. 在github上创建仓库,将写好的文件推送到github上
  2. 后面如果有更新的话,需要先将代码推送到github上,然后执行 npm version 版本号或者major、minor、patch命令更新版本号,最后执行npm publish即可完成包的更新

注意

  1. 由于github上仓库,现在默认是main分支,npm好像是默认读取master分支上的README.md,只有main分支是看不到README的,需要创建一个master分支才能看到。

image.png

参考资料

  1. how-to-make-a-beautiful-tiny-npm-package-and-publish-it
  2. [npm文档](docs.npmjs.com/)
  3. 深入浅出package.json