创建npm账号
npm adduser
按照提示输入账号,密码和邮箱,然后将提示创建成功
【注意】npm adduser成功会自动登陆,所以不需要再登录了
登录npm账号
如果你本来就有npm账号,那么这时你就可以进行npm登录,命令如下:
npm login
此时你同样按照提示输入账号,密码,邮箱,进行登录即可
构建自己要发布的包
准备独一无二的包名
- 先准备一个包的名字,名字只能由小写英文,中杠线,下划线等进行构成。(尽量不要写中杠线)
- 准备好包的名字后,你需要在npm服务器上搜索是否已经存在同名的包,如果存在请修改包名,否则无法发布
npm search 你的包名
表示这个包名可以使用
创建项目文价夹与package.json文件
准备好一个独一无二的包名后,就可以进行新建一个文件夹了,文件夹的名字就取为你的包名
在你新建的文件夹中执行命令:
npm init --yes //得到一个package.json文件
说明:在这个package文件中,name就是你这个包的名字(默认和项目文件夹名字相同),如果别人要使用你的包就要通过这个名字进行导入使用
main字段对应的就是你的包被使用时的入口文件,一般为index.js,别人导入你的包实际上就是使用的这个文件
实现你的模块的功能
注意:要建立一个src文件夹,文件夹中要包含一个main.js文件当作入口文件
写README.md文件
将你的包进行代码处理
当我们实现了当前包的功能后,理论上就可以直接发布了,但是由于你的包很可能会用在不同的环境下(比如浏览器和node端),这时,如果不对自己的代码进行处理的话,别人下载后很可能无法使用
这里推荐使用rollup进行代码处理,rollup使用方式如下
cnpm i rollup -g //安装rollup
处理你的包文件代码的语法:
rollup 主文件路径 --file index.js文件路径 --format umd --name "你的包名"
处理后形成的入口文件Index.js文件
如果你的包依赖于其他包,记得npm install使用到的包
发布代码包
想要发布成功,package.json文件中的main字段对应的入口文件index.js一定要存在
在上面的步骤中,我们通过rollup模块进行了处理得到了最终的index.js文件
npm publish //发布代码包的命令
发布时可能遇到的错误
如果错误是413
检查仓库是否被设成了淘宝镜像库
npm config get registry
https://registry.npm.taobao.org/ //如果是这个地址则说明仓库被设为了淘宝的镜像库
则设回原仓库
npm config set registry=http://registry.npmjs.org
登录账号(如未登录)
npm login 或者添加用户 npm adduser
重新发布
npm publish
如发布成功,则再次将仓库地址设为淘宝镜像地址
npm config set registry=https://registry.npm.taobao.org/
错误:
npm ERR! you do not have permission to publish "your module name". Are you logged in as the correct user?
发布成功页面
提示没有权限,其实就是你的module名在npm上已经被占用啦,这时候你就去需要去npm搜索你的模块名称,如果搜索不到,就可以用,并且把package.json里的name修改过来,重新npm publish
npm更新发布后的包
事实上npm更新包和发布包的命令是一样的,都是npm publish,不同之处在于,你需要修改package.json中包的版本号,如果没有改版本号就又进行了发布的话,是会报错的
如何撤销自己发布的包
这里要说一点,取消发布包可能并不像你想象得那么容易,这种操作是受到诸多限制的,撤销发布的包被认为是一种不好的行为
npm unpublish 包名 --force
撤销的注意事项
- 根据规范,只有在发包的24小时内才允许撤销发布的包
- 根据规范,一旦发布的包被撤销后,就需要等待24小时后才能从新发布此包
- 即使你撤销了发布的包,发包的时候也不能再和被撤销的包的名称和版本重复了(即不能名称相同且版本相同,因为这两者构成的唯一标识已经被“占用”了)
使用自己发布的包
和使用其他第三方包的方式是一样的
如果要在在浏览器客户端使用,需要按照webpack的打包后才能使用