NPM
一、NPM概述
- 什么是 NPM
npm 之于 Node ,就像 maven之于java。
作用:
npm 是 Node 官方提供的包管理工具,他已经成了 Node 包的标准发布平台,用于 Node 包的发布、传播、依赖控制。
npm 提供了命令行工具,方便下载、安装、升级、删除包 - 为什么要使用 NPM
Npm是随同 Node 一起安装的包管理工具,能解决 Node 代码部署上的很多问题,常见的场景有以下几种:
• 允许用户从 npm 服务器下载别人编写的第三方包到本地使用。
• 允许用户从 npm 服务器下载并安装别人编写的命令行程序到本地使用。
• 允许用户将自己编写的包或命令行程序上传到 npm 服务器供别人使用。
npm 的背后,是一个数据库,详细记录了每个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专注于功能的开发。
二、如何使用 NPM
-
安装
npm 不需要单独安装。在安装 Node 的时候,会连带一起安装 npm 。但是,Node 附带的 npm 可能不是最新版本,最后用下面的命令,更新到最新版本。
npm install npm@latest -g
如果是 Window 系统使用以下命令即可:
npm install npm -g
也就是使用 npm 安装自己。之所以可以这样,是因为 npm 本身与 Node 的其他模块没有区别。
然后,运行下面的命令,查看各种信息。
查看 npm 命令列表$ npm help
查看各个命令的简单用法$ npm -l
查看 npm 的版本$ npm -v
查看 npm 的配置$ npm config list -l
-
使用
4.1 npm init
npm init 用来初始化生成一个新的 package.json 文件。它会向用户提问一系列问题,如果你觉得不用修改默认配置,一路回车就可以了。 如果使用了 -f(代表force)、-y(代表yes),则跳过提问阶段,直接生成一个新的 package.json 文件。
$ npm init -f
$ npm init -y 跳过提问阶段
4.2 npm install
使用 npm 安装包的命令格式为:npm [install/i] [package_name]
1、本地模式和全局模式
npm 在默认情况下会从 NPM 搜索或下载包,将包安装到当前目录的 node_modules 子目录下。
全局模式的优势和劣势:
优势:提供程序的重复利用程度,避免同样的内容的多分副本
劣势:难以处理不同的版本依赖
本地模式的优势和劣势
优势:不会有不同程序依赖不同版本的包的冲突问题,减轻了包作者的 API 兼容性压力
劣势:同一个包可能会被安装许多次。
例如:npm install -g npm命令,就是以全局模式安装 npm。
全局模式的使用场景:只适用于工具模块,比如 npm、eslint 。
关于使用全局模式,多数时候并不是因为许多程序都有可能用到了它,为了减少多重副本而使用全局模式,而是因为 本地模式不会注册 PATH 环境变量。 “本地安装”指的是将一个模块下载到当前项目的 node_modules 子目录,然后只有在项目目录之中,才能调用这个模块。
本地模式和全局模式的命令如下:
三、本地安装$ npm install
全局安装
$ npm install -global
$ npm install -g
npm install 也支持直接输入 Github 代码库地址。
$ npm install git://github.com/package/path.git$ npm install git://github.com/package/path.git#0.1.0
说明:安装之前,npm install 会先检查,node_modules 目录之中是否已经存在指定模块。如果存在,就不再重新安装了,即使远程仓库已经有了一个新版本,也是如此。
如果你希望,一个模块不管是否安装过, npm 都要强制重新安装,可以使用 -f 或 --force 参数。
$ npm install --force
安装不同版本
install 命令总是安装模块的最新版本,如果要安装模块的特定版本,可以在模块名后面加上 @ 和版本号。
$ npm install sax@latest$ npm install sax@0.1.1$ npm install sax@">=0.1.0 <0.2.0"
install 命令可以使用不同参数,指定所安装的模块属于哪一种性质的依赖关系,即出现在 packages.json 文件的哪一项中。
–save:模块名将被添加到 dependencies,可以简化为参数-S。
–save-dev:模块名将被添加到 devDependencies,可以简化为参数-D。
$ npm install sax --save
$ npm install node-tap --save-dev#
或者
$ npm install sax -S
$ npm install node-tap -D
四、npm、nrm、cnpm
1、nrm(npm registry manager )是npm的镜像源管理工具,有时候国外资源太慢,那么我们可以用这个来切换镜像源。
(一)首先全局安装 nrm:
npm install -g nrm
(二)安装完后就可以立即使用了,我们来列出可用的源:
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/
1.
(三)当然这里我们选择国内淘宝的源:
nrm use taobao
2、cnpm代表的就是访问淘宝的镜像