// 检查 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
生成的配置的基本信息如下:

生成的文件配置如下:

**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】
\* 命令行注册时,在发包时kennel出错,建议尽量去官网注册。
注册成功后,可简单熟悉下npm官网的内容结构。
[]( )1.3、npm账号登录
------------------------------------------------------------------------------
执行命令:
npm login
然后提示你,会让你依次输入第二步中第一种方法注册的用户名、密码和邮箱

**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已经在列表中了:

### []( )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
可以看到,已经有两个版本了:

[]( )三、删除包
========================================================================
[]( )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已经删除,去主页查看:

[]( )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已经删除了

[]( )四、发布测试包发布(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、通过执行命令修改: