用npm创建模块并发布

创建npm账号
npm adduser
1
按照提示输入账号,密码和邮箱,然后将提示创建成功

【注意】npm adduser成功会自动登陆,所以不需要再登录了

登录npm账号
如果你本来就有npm账号,那么这时你就可以进行npm登录,命令如下:

npm login
1
此时你同样按照提示输入账号,密码,邮箱,进行登录即可

构建自己要发布的包
准备独一无二的包名
先准备一个包的名字,名字只能由小写英文,中杠线,下划线等进行构成。(尽量不要写中杠线)
准备好包的名字后,你需要在npm服务器上搜索是否已经存在同名的包,如果存在请修改包名,否则无法发布
npm search 你的包名
1

表示这个包名可以使用

创建项目文价夹与package.json文件
准备好一个独一无二的包名后,就可以进行新建一个文件夹了,文件夹的名字就取为你的包名
在你新建的文件夹中执行命令:

npm init --yes        //得到一个package.json文件
1

说明:在这个package文件中,name就是你这个包的名字(默认和项目文件夹名字相同),如果别人要使用你的包就要通过这个名字进行导入使用
main字段对应的就是你的包被使用时的入口文件,一般为index.js,别人导入你的包实际上就是使用的这个文件

实现你的模块的功能
注意:要建立一个src文件夹,文件夹中要包含一个main.js文件当作入口文件


写README.md文件


将你的包进行代码处理
当我们实现了当前包的功能后,理论上就可以直接发布了,但是由于你的包很可能会用在不同的环境下(比如浏览器和node端),这时,如果不对自己的代码进行处理的话,别人下载后很可能无法使用

这里推荐使用rollup进行代码处理,rollup使用方式如下
cnpm i rollup -g        //安装rollup
1

处理你的包文件代码的语法:

rollup 主文件路径 --file index.js文件路径 --format umd --name "你的包名"
1
处理后形成的入口文件Index.js文件

如果你的包依赖于其他包,记得npm install使用到的包

发布代码包
想要发布成功,package.json文件中的main字段对应的入口文件index.js一定要存在
在上面的步骤中,我们通过rollup模块进行了处理得到了最终的index.js文件

npm publish        //发布代码包的命令
1
发布时可能遇到的错误

如果错误是413

检查仓库是否被设成了淘宝镜像库

npm config get registry
1
https://registry.npm.taobao.org/    //如果是这个地址则说明仓库被设为了淘宝的镜像库
1
则设回原仓库

npm config set registry=http://registry.npmjs.org
1
登录账号(如未登录)

npm login 或者添加用户 npm adduser
1
重新发布

npm publish
1
如发布成功,则再次将仓库地址设为淘宝镜像地址

npm config set registry=https://registry.npm.taobao.org/
1
错误:

npm ERR! you do not have permission to publish "your module name". Are you logged in as the correct user?
1
发布成功页面


提示没有权限,其实就是你的module名在npm上已经被占用啦,这时候你就去需要去npm搜索你的模块名称,如果搜索不到,就可以用,并且把package.json里的name修改过来,重新npm publish

npm更新发布后的包
事实上npm更新包和发布包的命令是一样的,都是npm publish,不同之处在于,你需要修改package.json中包的版本号,如果没有改版本号就又进行了发布的话,是会报错的

如何撤销自己发布的包
这里要说一点,取消发布包可能并不像你想象得那么容易,这种操作是受到诸多限制的,撤销发布的包被认为是一种不好的行为

npm unpublish 包名 --force
1
撤销的注意事项
根据规范,只有在发包的24小时内才允许撤销发布的包
根据规范,一旦发布的包被撤销后,就需要等待24小时后才能从新发布此包
即使你撤销了发布的包,发包的时候也不能再和被撤销的包的名称和版本重复了(即不能名称相同且版本相同,因为这两者构成的唯一标识已经被“占用”了)
使用自己发布的包
和使用其他第三方包的方式是一样的


如果要在在浏览器客户端使用,需要按照webpack的打包后才能使用
 

猜你喜欢

转载自blog.csdn.net/weixin_44389107/article/details/88805537
今日推荐