npm包的发布/迭代和删除/废弃

子成君 1.3K 0

[aru_1]npm

npm - ndoe包管理器(node package manager)

  • 增(发布:npm publish;安装:npm i)
  • 删(废弃:npm deprecate;卸载:npm rm)
  • 改(更新:npm up)
  • 查(搜索:npm s)

packagemodule

  • package:含有package.json描述文件发布到npm仓库的文件
  • module:在node_modules中,可以被require()方法加载的任何文件

通俗讲就是你的程序包发布到npm仓库前是package,而发布后通过npm命令安装的是module,

package和module的关系:

  • module不一定是package(如node内置模块就不是),package一定是module
  • 含package.json文件的module一定是package

发布npm包

下面描述仅个人账户的unscoped包发布

1.注册

https://www.npmjs.com/

扩展

使用nrm管理npm仓库

nrm是npm仓库管理的软件,可用于npm仓库的快速切换,nrm 常用命令:

 nrm //展示nrm可用命令
 nrm ls //列出已经配置的所有仓库
 nrm test //测试所有仓库的响应时间
 nrm add <registry> <url> //新增仓库
 nrm use <registry> //切换仓库

npm官方建议规范的包至少包含:

  • package.json(包的基本信息)
  • README.md(文档)
  • index.js (入口文件)

2.创建项目

(1)创建工程文件夹

(2)创建package.json(npm init)

package.json中的author要和登录npm账号的一致,不然会报错

{
  "name": "demo-pkg",
  "version": "1.0.0",
  "description": "my first npm package",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "npm",
    "packge"
  ],
  "author": "xssv",
  "license": "ISC"
}

main字段即是包的入口文件

(3)创建README.md

(4)创建index.js(入口文件)

module.exports = {
    printMsg: function () {
        console.log('demo-pkg!');
    }
}

(5)发布

注意:未登录请先登录再发布

npm publish

npm publish 命令执行,默认是进行私有发布,参见官网publish命令 , scoped的包私有发布时需要收费

公共发布命令:

npm publish --access public

补充:

1.如果报下面的401错 [unauthorized] Login first 那就是未登录,通过npm adduser登录一下

npm ERR! code E401
npm ERR! 401 Unauthorized - PUT https://registry.npm.taobao.org/demo - [unauthorized] Login first

注意登录后的on 后面的地址是不是https://registry.npmjs.org/ 不要登录错了

Logged in as zcjunblog on https://registry.npmjs.org/

使用npm who am i验证当前登录的npm用户

2.如果报下面这个错这是由于包名重复造成的原因,更换包名即可

You do not have permission to publish "XXX". Are you logged in as the correct user?

包名和域名差不多,先到先得,如果我非要发布一个叫"XXX"的包,只能给它加作用域放到我的命名空间下

npm init --scope=@用户名 -y
@符号后面的是你注册npm账户时的username同author要和登录npm账号的一致,如果不记得可以通过npm who am i查询。

有看不懂的报错也请直接复制报错内容搜索即可查到解决方法

npm包的迭代

每次迭代都要涉及到:

  • 内容的变更
  • 版本的变更

一、更新内容

例如上述index.js变更为:

module.exports = {
    demoFun: function () {
        console.log('demo!');
    }
}

二、更新版本

npm版本号以’.’隔开,从左至右依次代表:主版本(major)、次要版本(minor)、补丁版本(patch)。

例如:
1.0.0
major.minor.patch

关于版本变更规范:
npm包的发布/迭代和删除/废弃

变更版本号的命令:npm version <major | minor | patch>

假如我们本次是次要发布,我们执行命令:

npm version minor

然后再次发布

npm publish

我们可以通过命令查看我们包的所有版本:

npm view 包名 versions

废弃/删除npm包

废弃和删除的区别在于:

  • 废弃不会将包或版本从npm仓库删除,仍然可以继续下载安装,并在安装的时候会有警示
  • 删除会将包从npm彻底删除,无法被下载安装

废弃指定版本

语法:npm deprecate <pkg>[@<version>] <message>

npm deprecate包名@1.1.0 'test deprecate'

此时该包依旧可以被安装使用(npm i 时会有警告)

删除发布的包

npm unpublish 包名 --force

此时该包已经被删除无法再被下载使用

发表评论 取消回复
OwO 图片 链接 代码

分享