~ 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