npm使用
NPM:Node Package Manager (包管理工具)
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
-
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
-
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
-
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
Nodejs集成安装了npm,可以通过输入 npm -v
来测试是否成功安装。命令如下,出现版本提示表示安装成功:
$ npm -version
6.14.6
升级更新NPM
$ sudo npm install npm -g
npm的常用命令
序号 | 命令 | 描述 |
---|---|---|
1 | npm -v | 显示版本,检查npm 是否正确安装。 |
2 | npm install express | 安装express模块 |
3 | npm install -g express | 全局安装express模块 |
4 | npm uninstall express | 卸载指定的模块 |
5 | npm link express | 把全局目录下的express模块链接到本地的node_modules下 |
6 | npm list | 列出已安装模块 |
7 | npm search express | 搜索指定的NPM包 |
8 | npm show express | 显示模块详情 |
9 | npm update | 升级当前目录下的项目的所有模块 |
10 | npm update express | 升级当前目录下的项目的指定模块 |
11 | npm update -g express | 升级全局安装的express模块 |
12 | npm init | 通过向导的方式生成package.json文件 |
13 | npm adduser | 添加用户 在npm官网注册的账号 |
14 | npm publish . | 可以发布自己制作的包到NPM服务器 |
15 | npm unpublish <包名>@<版本号> | 可以撤销发布自己发布过的某个版本包。 |
使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。
语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。
-
X:如果有大变动,新增了功能,向下不兼容,需要更新X位。
-
Y:如果是新增了功能,但是向下兼容,需要更新Y位。
-
Z:如果只是修复bug,需要更新Z位。
NPM命令使用介绍
使用NPM安装模块
有一个简单安装任何Node.js模块,语法如下:
npm install <Module Name>
例如,下面是安装一个著名的Node.jsweb框架模块的命令叫 express:
npm install express
现在,你可以在js文件中使用此模块如下:
var express = require('express');
下载三方包
npmjs.com提供了可以根据包名来搜索的平台,但是如果不知道包名可以百度一下。知道了包名后,就可以使用命令去安装了,例如:Express
npm install express
下载完成之后,express包就放在了工程目录下的node_modules
目录中,在代码中只需要通过reuqire('express')
的方式去引用,无需指定包路径。
以上命令默认下载最新版本第三方包,如果要下载指定版本,可以在包名后面追加@
,例如通过如下命令可以下载0.0.1版本的express。
npm install express@0.0.1
如果使用到的第三方包比较多,在终端下一个包一条命令的安装非常不方便,因此NPM对package.json
的字段做了扩展,允许在其中添加三方包依赖。
npm install express --save
{
"name":"test",
"main":"./lib/main.js",
"dependencies":{
"express":"3.2.1"
}
}
全局安装VS本地安装
本地安装
默认情况下,NPM安装指定包默认会安装到本地。
本地安装指的是包安装在当前目录中node_modules文件夹中。
本地安装的包都可以通过require()方法进行访问。
例如:
我们安装Express模块:$ npm install express
列出所有本地安装的模块$ npm ls
本地安装request模块:npm install request
在实际工作中,安装包时可能需要指定包的版本号,命令格式如下:npm install <包名>@<版本号>
例如:
安装2.44版本的request模块:npm install request@2.44
也可以使用版本号范围,安装某一版本范围的包版本。
比如,
安装版本号前缀为2.4的版本的request模块:npm install request@2.4.x
可以通过以下命令,安装版本号大于2.0的request模块:npm install request@">2.0"
还可以使用如下命令组合,安装指定范围的版本号的包:npm install request@">=2.0 <2.5"
全局安装
全局安装包都存储在系统目录中。
我们可以在nodejs的CLI(命令行界面)使用,但是不能直接使用require()方法进行访问。
例如安装http-server包:
//全局安装 -g
$ npm install -g http-server
//使用node CLI
$ http-server
全局模块路径查看与路径修改查看部分npm默认设置npm config ls
查看全部npm默认设置npm config ls -lnpm
包全局安装目录:windows: C:\Users\Administrator\AppData\Roaming\npmMacOSX: /usr/local/lib/node_modules修改全局模块安装路径npm config set prefix "D:\install\node\node_global"npm config set cache"D:\install\node\node_cache"
卸载模块
使用下面的命令卸载Node.js模块npm uninstall express更新模块更加package.json并更新npm update express搜索模块搜索使用NPM包名npm search express
NPM换源
nrm
全局安装 nrm:
npm i nrm -g
nrm ls 列出来现在已经配置好的所有的原地址
查看当前 nrm 内置的几个 npm 源的地址:
# nrm ls结果如下: npm ---- https://registry.npmjs.org/ cnpm --- http://r.cnpmjs.org/* taobao - https://registry.npm.taobao.org/ nj ----- https://registry.nodejitsu.com/ rednpm - http://registry.mirror.cqupt.edu.cn/ npmMirror https://skimdb.npmjs.com/registry/ edunpm - http://registry.enpmjs.org/
nrm use是切换到哪个源上
nrm use npm
nrm add添加源
nrm add <registry> <url> [home]
nrm del删除源
nrm del <registry>
nrm test测试源的响应时间
nrm test
淘宝 NPM 镜像
安装cnpm
$ npm install -g cnpm
安装包
$ cnpm install [模块名]
同步模块
直接通过 sync 命令马上同步一个模块, 只有 cnpm 命令行才有此功能:
cnpm sync [模块名]
其它命令
cnpm info [模块名]
npm上传自己的代码
-
第一步,在https://www.npmjs.com/ 注册自己的npm账号(记住自己的用户名,密码,邮箱)
-
第二步,新建上传代码的文件夹,在cmd中输入 npm init,按步骤输入package name:包名字(test)、version:版本号(0.0.3)、description:描述(npm包)、entry point:(index.js)一般不需要改、test command:不需要也可以、git repository:GitHub地址或者不填、keywords:关键字、author:作者、license: (ISC)、Is this OK? (yes)最后yes、
你会得到一个package.json文件(之后需要在里面进行修改version),在其中写一些,
-
在上传自己的代码时,先查看源是npm还是taobao(nrm ls),如果是taobao则改为npm(nrm use npm),如果不改过来则会报错
-
输入npm login 输入自己的用户名,密码,邮箱,如果可以的话你的邮箱会得到一个验证码,输入进去
-