概念
- 包:(package),代表了一组特定功能的源码集合
- 包管理工具
- 管理 包 的应用软件,可以对包进行下载安装,更新,删除,上传等操作
- 借助包管理工具,可以快速开发项目,提升开发效率
- 包管理工具是一个通用的概念,很多编程语言都有包管理工具
- 常用的包管理工具
- npm
- yarn
- cnpm
npm
npm是node.js官方内置的包管理工具
npm安装
npm -v 查看版本号
npm基本使用
初始化
npm init
npm init命令的作用是将文件夹初始化为一个 包 ,交互式创建package.json文件
注意:
- package name(包名)不能使用中文,大写,默认值是文件夹的名称
- version(版本号) x.x.x的形式定义 x必须是数字 默认值是1.0.0
- package.json可以手动创建和修改
- npm init -y 或者 npm init --yes 急速创建 package.json
搜索包
方式:命令行 npm s/search 关键字
下载安装包
方式:npm install 和 npm i 命令安装包
运行后文件夹会新增两个资源:
- node_modules 文件夹 存放下载的包
- package-lock.json 包的锁文件,用来锁定包的版本
注意: 假如命令安装包是A,A中安装了一些包(B),就说B是A的一个依赖包(A依赖B)
生产环境和开发环境
开发环境:程序员专门用来写代码的环境,一般指程序员的电脑,项目一般只能程序员自己访问
生产环境:代码正式运行的环境,一般指正式的服务器电脑,项目一般每个客户都可以访问
生产依赖和开发依赖
| 类型 | 命令 | 补充 | 理解 |
|---|---|---|---|
| 生产依赖 | npm i -S uniq npm i --save uniq | -S是默认选项 包信息保存在package.json中dependencies属性 | 在开发阶段使用的依赖包 |
| 开发依赖 | npm i -D less npm i --save-dev less | 包信息保存在package.json中devDependencies属性 | 在开发阶段和最终上线运行阶段都用到的依赖包 |
全局安装
npm i -g nodemon
作用:自动重启node应用程序 说明:
- 全局安装的命令不受工作目录位置的影响
npm root -g可以查看全局安装包的位置- 不是所有的包都适合全局安装,只有全局类的工具才适合
安装指定版本的包
npm i <包名@版本号>
npm i jquery@1.10.2
删除依赖
//局部删除
npm remove uniq
npm r uniq
//全局删除
npm remove -g nodemon
配置命令别名
通过配置命令别名可以更简单的执行命令
npm run server
npm run start
//start可以省略run
npm start
说明:
- npm start 是项目中常用的一个命令,一般用来重启项目
- npm run有自动向上级目录查找的特性,和require函数一样
- 对于陌生的项目,可以查看scripts属性来参考项目的一些操作
cnpm
介绍
cnpm是一个淘宝创建的npmjs.com的完整镜像,也称为 淘宝镜像
操作命令
| 功能 | 命令 |
|---|---|
| 初始化 | cnpm init / cnpm i |
| 安装包 | cnpm i uniq cnpm i -S uniq cnpm i -D uniq cnpm i -g nodemon |
| 安装项目依赖 | cnpm i |
| 删除 | cnpm r uniq |
yarn
yarn特点
- 速度超快:yarn缓存了每个下载过的包,所以再次使用时无需重复下载,同时利用并行下载以最大资源利用率
- 超级安全:在执行代码之前,yarn会通过算法校验每个安装包的完整性
- 超级可靠:使用详细,简洁的锁文件格式和明确的安装算法,能保证在不同系统上无差异工作
yarn安装
npm i -g yarn
yarn常用命令
| 功能 | 命令 |
|---|---|
| 初始化 | yarn init/yarn init -y |
| 安装包 | yarn add uniq 生产依赖 yarn add less--dev开发依赖 yarn global add nodemon 全局安装 |
| 删除包 | yarn remove uniq 删除项目依赖包 yarn global remove nodemon 全局删除包 |
| 安装项目依赖 | yarn |
| 运行命令别名 | yarn<别名> # 不需要添加run |
num和yarn的选择
- 根据锁文件来判断项目的包管理工具
- npm:
package-lock.json - yarn:
yarn.lock
- npm: