npm关于组件包的发布与管理

// 检查 node 版本 v16.13.1

node -v

// 如版本太老,去node官网下载:https://nodejs.org/zh-cn/ 安装版本

// 检查npm版本

npm -v

//安装 npm 最新版本

npm install npm@latest -g




*   2、镜像管理



// 检查npm镜像

npm config get registry

// 如果是淘宝镜像【http://registry.npm.taobao.org】,则切换镜像

// 切换为原始镜像

npm config set registry http://registry.npmjs.org




*   3、发布包常用命令行



// 初始化

npm init

// 登录

npm login

// 发布

npm publish

// 发布Beta版本

npm publish --tag beta

// 发布私有包格式

npm publish --access public

// 删除指定的版本

npm unpublish 包名@版本号

// 删除整个包

npm unpublish 包名 --force

// 安装:正式版

npm install packageName

// 安装:测试版

npm install packageName@beta.0




以上都会的。下面的可以略过。



* * *



* * *



[]( )一、发布一个新包

===========================================================================



[]( )1.1、创建一个新包

-----------------------------------------------------------------------------



cd到要发布的项目根目录,查看根目录内是否有package.json文件。如果之前已经创建,检查配置是否完整,如果完整可以不再初始化;如果没有创建或不确定是否完整的情况下,还是建议执行初始化包的命令,命令会帮你补充package.json文件之前没有的配置。初始化npm包命令如下:



npm init




生成的配置的基本信息如下:  

![请添加图片描述](https://img-blog.csdnimg.cn/b46c624a75ce43868f4392868f6a2d00.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmF0dGFuY2hlbg==,size_20,color_FFFFFF,t_70,g_se,x_16)  

生成的文件配置如下:  

![请添加图片描述](https://img-blog.csdnimg.cn/5e9dee319d1b4f729dc7dc2b082cb8c6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmF0dGFuY2hlbg==,size_20,color_FFFFFF,t_70,g_se,x_16)  

**Tips:**  

如果自己的包还需要引用第三方包,需要在package.json文件中增加dependencies节点,写入依赖的包及版本,如下:



"dependencies": {

	"zm-keyboard-number": "^1.0.10",

	"zm-verify-input": "^1.0.7"

},



最终生成package.json文件的配置如下:



{

"name": "node_test",//包名称

"version": "1.0.0",//版本

"description": "",// 描述

"main": "index.js",// 包的主要入口点

"dependencies": {//引用的第三方包与对应的版本

	"zm-keyboard-number": "^1.0.10",

	"zm-verify-input": "^1.0.7"

},

"scripts": {// 脚本命令

	"test": "echo \"Error: no test specified\" && exit 1"

},

"keywords": [// 搜索关键词

	"test"

],

"author": "rattan",// 作者名称

"license": "ISC"// 许可证类型

}




[]( )1.2、npm账号注册

------------------------------------------------------------------------------



1、[npm官方]( )注册账号。  

2、使用npm 命令注册:【npm adduser】  

![请添加图片描述](https://img-blog.csdnimg.cn/6568eff9e1424ef183ead26abbde9c8d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmF0dGFuY2hlbg==,size_20,color_FFFFFF,t_70,g_se,x_16)\* 命令行注册时,在发包时kennel出错,建议尽量去官网注册。



注册成功后,可简单熟悉下npm官网的内容结构。



[]( )1.3、npm账号登录

------------------------------------------------------------------------------



执行命令:



npm login




然后提示你,会让你依次输入第二步中第一种方法注册的用户名、密码和邮箱  

![请添加图片描述](https://img-blog.csdnimg.cn/c603b281608546899a0e05424f351859.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmF0dGFuY2hlbg==,size_20,color_FFFFFF,t_70,g_se,x_16)  

**Tips:**  

我这里多了一个配置



> Please use the one-time password (OTP) from your authenticator application  

> Enter one-time password:



翻译:



> 请使用您的验证器应用程序中的一次性密码(OTP)  

> 输入一次性密码:



因为我的账号配置了验证器登录验证,属于非必须的步骤,可以不添加配置。



[]( )1.4、发布包,上传到npm包服务器

-------------------------------------------------------------------------------------



npm publish




### []( )1.4.1、报错:npm ERR! code E403



> npm ERR! code E403  

> npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/node\_test - You do not have permission to publish “node\_test”. Are you logged in as the correct user?



表示包’node\_test‘已经在包管理器已经存在被别人用了,需要更改包的名称。



然后我改了包的名称【node\_test\_p】,重新cd到该目录下,再次执行发布命令,最终出现如下打印表示发布成功:



> +node\_test\_p@1.0.0



进入自己的npm主页上验证以下,可以看到包node\_test\_p已经在列表中了:  

![请添加图片描述](https://img-blog.csdnimg.cn/72933f2b1c9c405db7735e83e90717fd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmF0dGFuY2hlbg==,size_20,color_FFFFFF,t_70,g_se,x_16)



### []( )1.4.2、报错:no\_perms Private mode enable



> no\_perms Private mode enable, only admin can publish this module:包名



这是使用npm源的问题,因为不是使用原始镜像,可能用的是其他镜像,如淘宝镜像导致的。



// 检查npm镜像

npm config get registry

// 如果是淘宝镜像【http://registry.npm.taobao.org】,则切换镜像

// 切换为原始镜像

npm config set registry http://registry.npmjs.org




到这里,说明已经成功发布一个包了,每个人可以通过执行【npm install node\_test\_p】命令,来下载安装这个包了。



[]( )二、更新已经发布的包

=============================================================================



这次我在根目录添加了一个【test.js】文件,需要更新这个包到服务器。



[]( )2.1、修改包的版本

-----------------------------------------------------------------------------



有两种方式:  

1、**【推荐】**:直接在【package.json】配置文件中直接修改包的版本  

2、命令行实现:



npm version patch




直接在原来的版本上自动加1,本质上是将【package.json】文件中的version值加1了。



[]( )2.2、重新发布包

----------------------------------------------------------------------------



npm publish




可以看到,已经有两个版本了:  

![请添加图片描述](https://img-blog.csdnimg.cn/d7d796370ee549c586ebad118c41cb1a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmF0dGFuY2hlbg==,size_20,color_FFFFFF,t_70,g_se,x_16)



[]( )三、删除包

========================================================================



[]( )3.1、删除指定的版本

------------------------------------------------------------------------------



格式:



> npm unpublish 包名@版本号



执行结果:



> xxx@rattanchen node\_test\_p % npm unpublish node\_test\_p@1.0.1  

> \-node\_test\_p@1.0.1



可以看到版本V1.0.1已经删除,去主页查看:



![请添加图片描述](https://img-blog.csdnimg.cn/bcd54919fbc94b6cb59d7f4296b1f4b8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmF0dGFuY2hlbg==,size_20,color_FFFFFF,t_70,g_se,x_16)



[]( )3.2、删除整个包

----------------------------------------------------------------------------



格式:



> npm unpublish 包名 --force



> xxx@rattanchen node\_test\_p % npm unpublish node\_test\_p --force  

> npm WARN using --force Recommended protections disabled.



*   node\_test\_p



这时会有警告提示!!!



可以看到包mypackage\_tao已经删除了  

![请添加图片描述](https://img-blog.csdnimg.cn/3517a7f4f4c24c3389508ba14a93100f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmF0dGFuY2hlbg==,size_20,color_FFFFFF,t_70,g_se,x_16)



[]( )四、发布测试包发布(Beta版)

===================================================================================



发布beta版,是因为有些功能还需要测试和验证,看看有没有bug啥的,还没有到正式发布的程度。



[]( )4.1、发布规则

---------------------------------------------------------------------------



如果正式版的版本号是1.0.0,在原版本上新增了功能之后,需要发布一个测试版本进行测试。  

测试版本的格式可以是:1.0.0-beta.0



**注意**:我们是在正式版本后面加上beta.0,.0 表示的是哪个版本,如果测试过程中发现了新问题需要修改,只需把 .0 改为 .1,以此类推。



[]( )4.2、版本号更改

----------------------------------------------------------------------------



1、直接修改package.json文件里的版本version。  

2、通过执行命令修改:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值