只要你做前端,就必定躲不开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 | npm version 0.0.4 |
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