[aru_1]npm
npm - ndoe包管理器(node package manager)
- 增(发布:npm publish;安装:npm i)
- 删(废弃:npm deprecate;卸载:npm rm)
- 改(更新:npm up)
- 查(搜索:npm s)
package和module:
- 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/
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 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
此时该包已经被删除无法再被下载使用
🎨 原创不易,支持请点赞、转载请注明本文作者为子成君