NPM介绍
-
npm
是node.js
的包管理器,用于node
插件管理(包括安装,卸载,管理依赖等) -
cnpm
是淘宝团队分享的使用国内镜像来代替国外服务器 -
参数
-
-g
参数- 全局安装(
global
),可以在命令行下直接使用 - 可以通过
npm root -g
查看全局安装的文件夹位置
- 全局安装(
-
-S
参数--save
安装包信息将加入到dependencies
(生产阶段的依赖) -
-D
参数--save--dev
安装包信息将加入到devDependencies
(开发阶段的依赖) -
i
参数
-
-
npm init -f
配置文件初始化 -
npm -v
查看npm
版本信息
使用 npm 命令安装模块
npm 安装 Node.js 模块语法格式如下:
$ npm install <Module Name>
以下实例,我们使用 npm 命令安装常用的 Node.js web框架模块 express:
$ npm install express
安装好之后,express 包就放在了工程目录下的 node_modules 目录中,因此在代码中只需要通过 require('express') 的方式就好,无需指定第三方包路径。
var express = require('express');
全局安装与本地安装
npm 的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如
npm install express # 本地安装
npm install express -g # 全局安装
如果出现以下错误:
npm err! Error: connect ECONNREFUSED 127.0.0.1:8087
解决办法为:
$ npm config set proxy null
本地安装
-
- 将安装包放在
./node_modules
下(运行npm
命令时所在的目录),如果没有node_modules
目录,会在当前执行npm
命令的目录下生成node_modules
目录。
- 将安装包放在
-
- 可以通过
require()
来引入本地安装的包。
- 可以通过
全局安装
-
-
将安装包放在
/usr/local
(Linux)下或者你node
的安装目录。Windows
下的全局安装的默认地址C:UsersXXXAppDataRoaming pm
-
-
- 可以直接在命令行里使用。
如果你希望具备两者功能,则需要在两个地方安装它或使用npm link。
如何改变npm全局安装路径?
-
使用命令的方式
npm config set prefix '路径'
-
修改
npmrc
文件npmrc
在node ode_modeules pm
下npmrc
文件就是记录npm
全局安装的路径。修改这个文件就可以更改npm
的全局安装路径。注意:npmrc
中设置的路径必须和环境变量中的路径保持一致
接下来我们使用全局方式安装express
$ npm install express -g
安装过程输出如下内容,第一行输出了模块的版本号及安装位置。
express@4.13.3 node_modules/express
├── escape-html@1.0.2
├── range-parser@1.0.2
├── merge-descriptors@1.0.0
├── array-flatten@1.1.1
├── cookie@0.1.3
└── send@0.13.0 (destroy@1.0.3, statuses@1.2.1, ms@0.7.1, mime@1.3.4, http-errors@1.3.1)
查看安装信息
你可以使用以下命令来查看所有全局安装的模块:
$ npm list -g
├─┬ cnpm@4.3.2
│ ├── auto-correct@1.0.0
│ ├── bagpipe@0.3.5
│ ├── colors@1.1.2
│ ├─┬ commander@2.9.0
│ │ └── graceful-readlink@1.0.1
│ ├─┬ cross-spawn@0.2.9
│ │ └── lru-cache@2.7.3
……
如果要查看某个模块的版本号,可以使用命令如下:
$ npm list grunt
projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1
使用 package.json
package.json
位于模块的目录下,用于定义包的属性。接下来让我们来看下express
包的package.json
文件,位于 node_modules/express/package.json
Package.json 属性说明
- name - 包名。
- version - 包的版本号。
- description - 包的描述。
- homepage - 包的官网 url 。
- author - 包的作者姓名。
- contributors - 包的其他贡献者姓名。
- dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
- repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
- main - main 字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
- keywords - 关键字
卸载模块
$ npm uninstall express
卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看:
$ npm ls
更新模块
$ npm update express
搜索模块
$ npm search express
Yarn
Yarn介绍
Yarn
就是一个类似于npm
的包管理工具,它是由facebook
推出并开源。与npm
相比,yarn
有着众多的优势,主要的优势在于:速度快、离线模式、版本控制。
Yarn 换源
使用yarn
来安装依赖时的体验比npm
要好很多;但是偶尔也会存在yarn
源仓库包下载不稳定的情况
// 查看 yarn 配置
yarn config get registry
//或者
yarn config list
> registry: 'https://registry.yarnpkg.com'
一 临时修改
yarn add 软件名 --registry https://registry.npm.taobao.org/
二 全局修改,安装淘宝镜像
yarn config set registry https://registry.npm.taobao.org
三 使用第三方软件快速修改、切换yarn
镜像源
yrm(YARN registry manager) 不仅可以快速切换镜像源,还可以测试自己网络访问不同源的速度
# 安装 yrm
npm install -g yrm
# 列出当前可用的所有镜像源
yrm 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
// skimdb -- https://skimdb.npmjs.com/registry
// yarn ---- https://registry.yarnpkg.com
# 使用淘宝镜像源
yrm use taobao
# 测试访问速度
yrm test taobao
YARN命令
- 版本查看
yarn -v
- 建立新工程
yarn init # 初始化项目,生成 package.json 文件(需要手动选择配置)
- 添加依赖包
# 通过 yarn add 添加依赖会更新 package.json以及 yarn.lock 文件
# 开发环境
yarn add <PackageName> # 依赖会记录在 package.json 的 dependencies 下 开发环境
# 生产环境
yarn add <packageName> --dev # 依赖会记录在 package.json 的 devDependencies 下 生产环境
- 安装全局依赖包
yarn global add <PackageName>
- 更新依赖包
yarn upgrade # 升级所有依赖项,不记录在package.json中
yarn upgrade <PackageName> # 升级指定包
yarn upgrade --latest # 忽略版本规则,升级到最新版本,并且更新 package.json
- 移除依赖包
yarn remove <PackageName>
- 安装
package.json
中的所有文件
yarn
或者yarn install
yarn install # 或者yarn在node_modules目录安装package.json中列出的所有依赖
yarn install --force # 强制下载安装 如果 node_modules 中有相应的包则不会重新下载 --force 可以强制重新下载安装
- 运行脚本
yarn run
用来执行在 package.json 中 scripts 属性下定义的脚本
// package.json
{
"scripts": {
"dev": "node app.js",
"start": "node app.js"
}
}
yarn run dev # yarn 执行 dev 对应的脚本 node app.js
- 显示某个包信息
yarn info <packageName> # 可以用来查看某个模块的最新版本信息
yarn info <packageName> --json # 输出 json 格式
yarn info <packageName> readme # 输出 README 部分
- 列出项目的所有依赖
yarn list # 列出当前项目的依赖
yarn global list # 列出全局项目的依赖
- 管理 yarn 配置文件
yarn config
yarn config set key value # 设置
yarn config get key # 读取值
yarn config delete key # 删除
yarn config list # 显示当前配置
yarn config set registry https://registry.npm.taobao.org # 设置淘宝镜像
- 缓存
yarn cache
yarn cache list # 列出已缓存的每个包
yarn cache dir # 返回 全局缓存位置
yarn cache clean # 清除缓存
- Yarn 独有的命令
yarn licenses ls # 允许你检查依赖的许可信息
yarn licenses generate # 自动创建依赖免责声明 license
yarn why taco # 检查为什么会安装 taco,详细列出依赖它的其他包
yarn why vuepress # 检查为什么会安装 vuepress,详细列出依赖它的其他包
修改Yarn的全局安装和缓存位置
-
修改全局安装位置
-
改变 yarn 全局安装位置
yarn config set global-folder <你的磁盘路径>
你会在你的用户目录找到
.yarnrc
的文件,打开它,找到global-folder
-
-
改变 yarn 缓存位置
yarn config set cache-folder <你的磁盘路径>
在我们使用全局安装包的时候,会在D:Softwareyarnglobal
下生成 node_modules.bin
目录
我们需要将D:Softwareyarnglobal
ode_modules.bin
整个目录 添加到系统环境变量中去,否则通过yarn
添加的全局包 在命令行中是找不到的。
检查当前yarn
的bin
的位置
yarn global bin
检查当前yarn
的全局安装位置
yarn global dir