~ Node.js 依赖包的管理
Node.js 中,NPM 对依赖包的管理主要包括:安装、( 查看 )、更新及卸载。
使用:依赖包的安装
依赖包的安装,是 NPM 最常用的用法,可以分为全局安装和本地安装。
[1] 全局安装
全局安装,指的是将包安装到命令行工具,使之成为一个全局的可执行命令,这样就可以在终端中直接使用了
// 基本语法 npm install -g <pkgname>
// 代码示例:全局安装 es-checker // 用于监测 Node.js 对 es6 的支持度:安装完成后,运行 es-checker 可以查看
[2] 本地安装
本地安装,一般用于实际的开发工作中:本地安装和模块引入,二者相辅相成
npm install <pkgname>
// 以 express 为例,安装好依赖包后,直接在代码中调用 require('express'); 即可引入
执行安装命令后,NPM 会在当前目录下创建 node_modules 目录,
然后,在 node_modules 目录下创建 <pkgname> 目录,并将包的内容解压到这个目录下。
需注意的是,需确保从当前目录一直到根目录都没有 node_modules 或 package.json,否则,npm 可能会把模块安装在有 node_modules 或 package.json 的那层目录。
「 其他特殊情况 」使用 NPM 对依赖包进行本地安装的时候,可能会遇到一些特殊的情形或需求,比如:
- 指定版本 — 如何安装不同版本的依赖包呢?
// 默认地,使用 npm install <pkgname> 命令安装的是最新版本的安装包 // 如果要安装指定版本,如版本 3.9.0,则使用@标志符: npm install <pkgname>@3.9.0
- 批量加载 package.json 中声明的依赖
如果项目依赖了很多 package,一个一个地安装那将是个体力活;
我们可以将项目依赖的包都在 package.json 这个文件里声明,然后 npm install 一行命令搞定
npm install // 安装 package.json 中声明的所有的包,不论生产环境还是开发环境 npm install --production // 安装 package.json 中声明的生产环境的包
- 声明不同环境( 生产环境 / 开发环境 )中的依赖
node_modules 中的包和 package.json 中的声明( 生产环境 / 开发环境 )之间具有一种关联( 依赖 )关系:
(1)生产环境:项目部署上线后的服务器环境
// 使用参数:-S( 等同于 --save ):表示安装包信息将加入到 dependencies npm install <pkgname> --save 或 npm install <pkgname> -S // package.json 文件的 dependencies 字段( 以express为例 ) "dependencies": { "express": "^3.9.0" }(2)开发环境:项目日常开发时使用的环境
// -D(等同于 --save-dev):表示安装包信息将加入到 devDependencies npm install express --save-dev 或 npm install express -D // package.json 文件的 devDependencies字段(以express为例): "devDependencies": { "express": "^3.9.0" }除上述批量加载 package.json 中声明的依赖包( 省力 )外,还可以在项目开发时,对生产环境和开发环境的包分别声明,而在生产部署时,根据 package.json 中的声明,通过 npm install --production 只安装生产环境的依赖。
- 镜像安装 — 如何解决被“墙”的问题
如果不能通过官方源安装,可以选择镜像源安装。So,什么是镜像?
包开始是只存在于国外的 NPM 服务器,但由于网络原因,经常访问不到,这时,我们可以在国内,创建一个和官网完全一样的 NPM 服务器,只不过,数据都是从人家那里拿过来的,除此之外,使用方式完全一样
(1)方式一:(不推荐,需要的话可自行百度)在执行命令时,添加 --registry=http://registry.url 即可
// 使用淘宝镜像的命令 npm install -g cnpm --registry=https://registry.npm.taobao.org(2)方式二:推荐使用 NRM,它提供了一些常用的 NPM 镜像地址,能够让我们快速切换安装包时的服务器地址
实际上,NRM 只是单纯的提供了几个常用的下载包的 URL 地址,并能够让我们在这几个地址之间很方便的进行切换,但是,我们每次安装包的时候,使用的装包工具都是 npm。
npm i nrm -g 全局安装 nrm 包 nrm ls 可以查看当前所有可用的镜像源地址以及当前所有的镜像源地址 nrm use npm 或 nrm usr taobao 切换不同的镜像源地址
管理:查看、更新及卸载
// 查看
npm ls 可以查看到底安装了哪些包
npm ls -g 可以查看全局安装的依赖包
npm info <pkgname> 可以查看包的详细信息
npm outdated <pkgname> 可以查看包是否过时
// 更新
npm update <pkgname> 可以用来更新包(有时候可能不好使)
npm install <pkgname> 重新安装包,默认更新到最新版本
// 卸载
npm uninstall <pkgname> 卸载/删除依赖包;可以加上 -g 参数卸载全局安装的包
// 另,如果要卸载全局模块,也可以
使用 npm root -g 命令先找到全局模块的安装目录,再使用 npm uninstall <pkgname> 命令进行卸载
// 如果要在 package.json 文件中删除相应代码,与安装时类似,需要使用 --save-dev 或其他相关参数
npm uninstall <pkgname> --save-dev


