基本概念
在JavaScript中,一个包是由多个相关的模块组成的集合。在Node.js中,包是通过package.json
文件来定义和管理的。package.json
文件包含了项目的相关信息,如项目名称、版本号、作者信息等。同时,package.json
文件也记录了项目依赖的其他模块,以及项目的入口文件等。
包管理工具就是管理『包』的应用软件,可以对包进行 下载安装, 更新 ,删除 ,上传等操作,借助包管理工具,可以快速开发项目,提升开发效率,包管理工具是一个通用的概念,很多编程语言都有包管理工具,所以掌握好包管理工具非常重要
常用的包管理工具
- npm
- yarn
- cnpm
NPM
npm 全称 Node Package Manager
,翻译为中文意思是『Node 的包管理工具』 ,npm 是 node.js 官方内置的包管理工具,是必须要掌握住的工具。
安装
node.js 在安装时会 自动安装 npm ,所以如果你已经安装了 node.js,可以直接使用 npm,可以通过 npm -v 查看版本号测试,如果显示版本号说明安装成功,反之安装失败。未安装可直接去 Node.js 中文网 (nodejs.com.cn)下载。
npm 基本使用
初始化
创建一个空目录,然后以此目录作为工作目录,启动命令行工具,执行 npm init。
npm init 命令的作用是将文件夹初始化为一个『包』, 交互式创建 package.json 文件。不想填直接 npm init -y 快速初始化,以你的文件夹为名字,快速生成 package.json 文件
package.json 内容示例:
属性翻译:
{
"name": "1-npm", #包的名字
"version": "1.0.0", #包的版本
"description": "", #包的描述
"main": "index.js", #包的入口文件
"scripts": { #脚本配置
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "", #作者
"license": "ISC" #开源证书
}
初始化的过程中还有一些注意事项:
- package name (包名) 不能使用中文、大写,默认值是文件夹的名称,所以文件夹名称也不能使用中文和大写
- version (版本号)要求 x.x.x 的形式定义,x 必须是数字,默认值是 1.0.0
- ISC 证书与 MIT 证书功能上是相同的,关于开源证书扩展阅读 如何选择开源许可证? http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
- package.json 可以手动创建与修改
- 使用 npm init -y 或者 npm init --yes 极速创建 package.json
下载安装包
我们可以通过 npm install 或 npm i 命令安装包
// 格式
npm install <包名>
npm i <包名>
运行之后文件夹下会增加两个资源
- node_modules 文件夹 存放下载的包
- package-lock.json 包的锁文件,用来锁定包的版本
生产依赖与开发依赖
我们可以在安装时设置选项来区分 依赖的类型,目前分为两类:
类型 | 命令 | 补充 |
生产依赖 | npm i -S 【包名】 ,npm i --save 【包名】 -S 等效于 --save,-S 是默认选项 | 包信息保存在 package.json 中 dependencies 属性 |
开发依赖 | npm i -D 【包名】 ,npm i --save-dev 【包名】 -D 等效于 --save-dev | 包信息保存在 package.json 中 devDependencies 属性 |
全局安装
我们可以执行安装选项 -g 进行全局安装,全局安装完成之后就可以在命令行的任何位置运行该命令
npm i -g 【包名】
说明:
- 全局安装的命令不受工作目录位置影响
- 可以通过 npm root -g 可以查看全局安装包的位置
- 不是所有的包都适合全局安装,只有全局类的工具才适合,可以通过查看包的官方文档来确定安装方式
安装包依赖
在项目协作中有一个常用的命令就是 npm i,通过该命令可以依据 package.json 和 package-lock.json 的依赖声明安装项目依赖
- npm i
- npm install
node_modules 文件夹大多数情况都不会存入版本库
安装指定版本的包
项目中可能会遇到版本不匹配的情况,有时就需要安装指定版本的包,可以使用下面的命令的
## 格式
npm i <包名@版本号>
## 示例
npm i jquery@1.11.2
删除依赖
项目中可能需要删除某些不需要的包,可以使用下面的命令
## 局部删除
npm remove 【包名】
npm r 【包名】
## 全局删除
npm remove -g 【包名】
CNPM
介绍
cnpm 是一个淘宝构建的npmjs.com的完整镜像,也称为『淘宝镜像』,cnpm 服务部署在国内 阿里云服务器上,可以提高包的下载速度。官方也提供了一个全局工具包 cnpm ,操作命令与 npm 大体相同
安装
我们可以通过 npm 来安装 cnpm 工具
npm install -g cnpm --registry=https://registry.npmmirror.com
操作命令
功能 | 命令 |
初始化 | cnpm init |
安装包 | cnpm i 【包名】,cnpm i -S 【包名】,cnpm i -D 【包名】,cnpm i -g 【包名】 |
安装项目依赖 | cnpm i |
删除 | cnpm r 【包名】 |
Yarn
yarn 介绍
yarn 是由 Facebook 在 2016 年推出的新的 Javascript 包管理工具,官方网址:yarn
yarn 特点
- 速度超快:yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快
- 超级安全:在执行代码之前,yarn 会通过算法校验每个安装包的完整性
- 超级可靠:使用详细、简洁的锁文件格式和明确的安装算法,yarn 能够保证在不同系统上无差异的工作
yarn 安装
我们可以使用 npm 安装 yarn
npm i -g yarn
yarn 常用命令
功能 | 命令 |
初始化 | yarn init / yarn init -y |
安装包 | yarn add 【包名】,yarn add 【包名】 --dev ,yarn global add 【包名】 |
删除包 | yarn remove 【包名】,yarn global remove 【包名】 |
安装项目依赖 | yarn |
选择
大家可以根据不同的场景进行选择
-
个人项目
如果是个人项目,哪个工具都可以,可以根据自己的喜好来选择
-
公司项目如果是公司要根据项目代码来选择,可以通过锁文件判断项目的包管理工具
-
npm 的锁文件为
package-lock.json
-
yarn 的锁文件为
yarn.lock
-
包管理工具 不要混着用,切记,切记,切记