npm使用指南


只要你做前端,就必定躲不开npm这个工具。这篇文章总结了npm的入门和对应的指令

前言

npm是什么?

要说npm是什么,首先要说node是什么。

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。

处于安全性等方面的考虑,原本只能存在于浏览器环境的js存在诸多限制比如IO操作,或者是读取本地文件,nodejs的存在,让js可以在系统环境下运行,这大大提升了js的发挥空间

npm(node package manager)顾名思义即node的包管理工具

为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。
更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。

npm 指令

注:

在npm中,包(package)、模块(module)、依赖(dependency)说的都是一回事儿。

常用命令

  • npm init 初始化项目,其实就是创建一个package.json文件。
  • npm install 安装所有项目依赖。
  • npm help xxx 查看xxx命令的帮助信息。

升级

  • npm -g install npm

设置npm配置

1
npm config set <key> <value> [–global]

查看npm配置

1
npm config ls

设置代理

1
npm config set proxy=http://xx.xx.xx.xx:8080

设置npm的镜像源

1
npm config set registry https://registry.npm.taobao.org

发布项目到npm

1.在官网注册npm账号

2.用户验证,命令行执行

npm adduser

3.发布模块,在模块的根文件夹执行

npm publish

4.更新版本

如果是git库时,会为新版本号创建一条提交信息,package版本号会自动递增。

1
2
npm version 0.0.4
npm publish

npm search 搜索(快捷方式:find, s)

  • xxx 搜索xxx 如:npm search jquery。

npm install 安装 (快捷方式:i)

  • xxx 搜索并安装xxx(局部)。安装多个依赖可用空格分割,如npm i jquery bootstrap。
  • xxx -g 搜索并安装xxx(全局)。安装多个同上。
  • xxx -D 安装并将依赖信息写在package.json中的devDependencies中。
  • 快捷方式 i均可,如npm i jquery。
  • xxx@版本号 指定需要安装的版本号,若不指定将安装最新的稳定版本。

npm uninstall 卸载(快捷方式:rm, r)

  • xxx 卸载xxx。多个依赖可用空格分割。
  • xxx -D 卸载xxx,并将依赖信息从package.json中的devDependencies中清除。

npm list 列出已安装依赖(快捷方式:ls)

  • 默认列出局部依赖。
  • npm list -g 列出已安装的全局依赖。

npm outdated 检查过期依赖

npm update 更新依赖(快捷方式:up)

  • xxx 局部更新xxx。
  • xxx -g 全局更新xxx。

npm root 查看依赖安装路径(也就是node_modules的路径)

  • 默认查看局部安装路径。
  • -g 查看全局安装路径。

npm view 查看模块的注册信息

  • xxx versions 列出xxx的所有版本, 如:npm view jquery versions。
  • xxx dependencies 列出xxx的所有依赖, 如:npm view gulp dependencies。

执行脚本

npm run ***

nvm 指令

nvm是什么

在我们的日常开发中经常会遇到这种情况:手上有好几个项目,每个项目的需求不同,进而不同项目必须依赖不同版的 NodeJS 运行环境。如果没有一个合适的工具,这个问题将非常棘手。

nvm 应运而生,nvm 是 Mac 下的 node 管理工具,有点类似管理 Ruby 的 rvm,如果需要管理 Windows 下的 node,官方推荐使用 nvmw 或 nvm-windows。不过,nvm-windows 并不是 nvm 的简单移植,他们也没有任何关系。但下面介绍的所有命令,都可以在 nvm-windows 中运行。

安装多版本的node/npm

例如,我们要安装4.2.2版本,可以用如下命令:

nvm install 4.2.2

nvm 遵守语义化版本命名规则。例如,你想安装最新的 4.2 系列的最新的一个版本的话,可以运行:

nvm install 4.2

nvm 会寻找 4.2.x 中最高的版本来安装。

你可以通过以下命令来列出远程服务器上所有的可用版本:

nvm ls-remote

在多个版本中个切换

每当我们安装了一个新版本 Node 后,全局环境会自动把这个新版本设置为默认。

nvm 提供了 nvm use 命令。这个命令的使用方法和 install 命令类似。

例如,切换到 4.2.2:

nvm use 4.2.2

列出已安装实例

nvm ls

在项目中使用不同版本的 Node

我们可以通过创建项目目录中的 .nvmrc 文件来指定要使用的 Node 版本。之后在项目目录中执行 nvm use 即可。.nvmrc 文件内容只需要遵守上文提到的语义化版本规则即可。另外还有个工具叫做 avn,可以自动化这个过程。

在多环境中,npm该如何使用呢?

每个版本的 Node 都会自带一个不同版本的 npm,可以用 npm -v 来查看 npm 的版本。全局安装的 npm 包并不会在不同的 Node 环境中共享,因为这会引起兼容问题。它们被放在了不同版本的目录下,例如 ~/.nvm/versions/node/<version>/lib/node_modules</version> 这样的目录。这刚好也省去我们在 Linux 中使用 sudo 的功夫了。因为这是用户的主文件夹,并不会引起权限问题。

但问题来了,我们安装过的 npm 包,都要重新再装一次?幸运的是,我们有个办法来解决我们的问题,运行下面这个命令,可以从特定版本导入到我们将要安装的新版本 Node:

nvm install v5.0.0 –reinstall-packages-from=4.2