yarn就如java的maven,专门用于对node.js项目的依赖管理,对比npm的好处是,npm吧每个项目的依赖安装在项目目录,导致由很多重复依赖下载。而yarn和maven一样,在本地建立一个仓库作为缓存,只有打包时,才复杂一份依赖打包进去
安装yarn
从官网下载安装包——安装yarn
输入yarn --version显示出版本号即安装成功了
使用yarn
- yarn init
初始化一个yarn项目根目录,这时其实就是通过命令行接收一些参数(如maven中的坐标信息,项目描述等),然后自动生成一个package.json(如maven中的pom文件)
package.json结构
其中主要指明了项目名称,主js文件,版本号和开源协议
{
"name": "test",
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}
依赖管理
通过以下命令,分别添加 普通依赖、开发环境下的依赖、宿主依赖、可选依赖
yarn add [package]
yarn add [package] --dev
yarn add [package] --peer
yarn add [package] --optional
- 普通依赖
普通依赖就是整个项目无论哪个阶段都有的依赖,开源require - 开发依赖
就如maven下的scope为dev,只在开发运行模式下具备,打包时不具备 - 宿主依赖
不像maven,java的依赖导入后,依赖的依赖也被导入当前项目,都可以导入包,yarn中,普通依赖的依赖是不能直接require的,除非你有显示依赖普通依赖的依赖或者在宿主依赖中声明该普通依赖,也就是说,同时出现在别的依赖,与宿主依赖中的依赖,在满足导入该依赖条件的运行时,该依赖的依赖也会导入,这时就可以require该依赖的依赖了。比如 Pa依赖了Pb,项目里普通依赖具有Pa,这时只能require(“Pa”),除非再把Pa加入宿主依赖,那才可以require(“Pb”)
安装后,对应package.json变为如下
{
"name": "test",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"axios": "^0.19.2"
},
"devDependencies":{},
"peerDependencies":{},
"optionalDependencies":{}
}
~ 会匹配最近的小版本依赖包,比如~0.19.2会匹配所有0.19.x版本,但是不包括0.20.x
^ 会匹配最新的大版本依赖包,比如^0.19.2会匹配所有0.x.x的包,包括0.20.x,但是不包括1.x.x
直接使用通配符 * 会匹配当前最新版本
还可以添加/更新 指定依赖版本号或者标签
yarn add [package]@[version]
yarn add [package]@[tag]
yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]
依赖安装
通过使用命令
yarn install
或
yarn
安装当前项目目录的package.json的依赖到本地缓存仓库
script脚本
在package.json中还可以指定一些脚本命令的别名,比如
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
这时在项目目录执行yarn run 脚本别名则会执行对应脚本,比如此处执行
yarn run build
实际会执行
vue-cli-service build