注册
- 要发布一个npm包,注册账号自然是必不可少的,去npm官网注册。
使用命令行登录npm
- 在登录之前,需要确保npm注册的源指向官方的地址,不然自己创建的npm包是发布不上去的使用
npm config get registry,查看注册源的地址。
npm config get registry
输出: https://mirrors.cloud.tencent.com/npm/
- 在这个时候我们就需要切换为npm官方的源,这里推荐下nrm,这是一个包管理器源管理器,可以帮助你快速切换注册源。
cnpm i -g nrm //全局安装nrm
nrm ls // 查看所有可用的源
nrm test //查看各个源的速度
nrm use 源名 //切换注册的源
这里使用nrm use npm 切换到官方的源
- 这样就可以用命令行登录了
//使用下面这两个命令皆可登录
npm addUser
npm login
按照提示输入用户名、密码、注册的邮箱
对了,如果你之前注册的官方源是http://registry.npmjs.org/这种的话,npm是不会让你登录上去的,需要将源切换为https://registry.npmjs.org/,这个时你就可以使用nrm注册带有安全加密的官方源
还有输入以上两个命令之后,会出现以下提示
这时你就需要把npm发到你邮箱里的OTP,复制到命令行里,这样才能真正地登录上去,登录成功提示如下:
Logged in as xxx on https://registry.npmjs.org/.
编写代码
- 创建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"
]
}
- 各项的意义
- name:你要发布的包的名字,像@fire-t/tiny就是作用域包,作用域包能防止和npm上已存在的包重名,发布必需
- version:版本号 发布必需,版本号也有讲究,例如 2.0.0,2就代表是主版本,这个是不向后兼容的;第一个0就代表小版本,这个是向后兼容的;最后一个0是代表补丁版本,是修复bug的。可以查看语义化版本,了解更多。
- description:包的描述是做什么的。
- license:协议
- repository:仓库,这个仓库是指向github上的仓库,所以不要写错,不然npm上就不能跳转到github上对应的仓库了
- main:主文件,入口文件
- keywords:关键字,方便在npm上搜索到
当然这些只是一部分,更多可以去 深入浅出package.json 和npm文档了解
- 主文件代码:index.js
//去除字符串中的空白符号
module.exports = function tiny(string){
if(typeof string !== 'string') throw new TypeError("Tiny want a string!")
return string.replace(/\s/g,"");
}
发包
- 使用
npm publish发包,但这个只是针对公共的包,例如tiny,而@fire-t/tiny是作用域包,npm会认为它是一个私有包,如果想要让这个包成为公共包,需要使用npm publish --access=public
这样就算发包成功了,这样之后下次发包就可以直接使用
npm publish了,因为npm已经确认这个包是公共包,链接如下:tiny。
创建仓库和更新包
- 在github上创建仓库,将写好的文件推送到github上
- 后面如果有更新的话,需要先将代码推送到github上,然后执行
npm version 版本号或者major、minor、patch命令更新版本号,最后执行npm publish即可完成包的更新
注意
- 由于github上仓库,现在默认是main分支,npm好像是默认读取master分支上的README.md,只有main分支是看不到README的,需要创建一个master分支才能看到。