各种依赖类型
最后更新于:2022-04-02 01:02:03
项目 `package.json` 文件中通常会包含多种依赖,如下:
```
{
"name": "my-project",
"dependencies": {
"package-a": "^1.0.0"
},
"devDependencies": {
"package-b": "^1.2.1"
},
"peerDependencies": {
"package-c": "^2.5.4"
},
"optionalDependencies": {
"package-d": "^3.1.0"
}
}
```
### 一、dependencies —— 普通依赖
运行项目时需要用到的依赖。如React、ImmutableJS。
### 二、devDependencies —— 开发依赖
开发时使用到的依赖。如Babel(ES6转ES5)、Flow(JS静态类型检查)
### 三、peerDependencies —— 对等依赖,发布依赖包时用
对等依赖——依赖的特殊类型,你在发布依赖包时使用。
使用对等依赖意味着,别人使用你的程序时,安装的依赖需要跟你安装的一毛一样。这对像React这样的包特别有用,它经常需要复制一份react-dom供安装者使用。
### 四、optionalDependencies —— 可选依赖
可选的依赖包,如果此包安装失败,Yarn依然会提示安装进程成功。
对非必须的依赖包很实用,如果安装失败,你可以选择其他的包替代。如Watchman。
### 五、bundledDependencies —— 要打包的依赖/捆绑依赖
在发布包时,会一起打包的依赖包。它是由包名组成的数组。
捆绑依赖包应该下载到项目本地。功能跟普通依赖是一样的。运行 `$ yarn pack` 时,它们也会被打包。
捆绑依赖是为了解决有些包可能在npm找不到,或者在你需要把你自己的项目作为模块使用时。
-
作者:Shellway Ho
转载请注明出处! 来源: http://docs.shellway.cn/learning-yarn/
';
Yarn命令 vs NPM命令
最后更新于:2022-04-02 01:02:01
### NPM和Yarn命令对比
| npm 命令 | Yarn 命令 | 备注 |
|---------------------|
| npm install | yarn install | 安装所有依赖包(依据package.json中的依赖配置参数) |
| (N/A) | yarn install --flat | 单版本模式 |
| (N/A) | yarn install --har| 生成har文件,记录安装时网络请求性能 |
| (N/A) | yarn install --no-lockfile| 不读写lockfile方式 |
| (N/A) | yarn install --pure-lockfile| 不生成yarn.lock文件 |
| npm install [package] | (N/A)| 安装依赖 |
| npm install --save [package] | yarn add [package]| 添加生产模式依赖到项目 |
| npm install --save-dev [package] | yarn add [package] [--dev/-D]| 添加开发模式的依赖 |
| (N/A) | yarn add [package] [--peer/-P] | 对等模式添加依赖,发布/分享项目时的依赖 |
| npm install --save-optional [package] | yarn add [package] [--optional/-O]| 添加可选依赖包 |
| npm install --save-exact [package] | yarn add [package] [--exact/-E]| 精准添加某版本的包 |
| (N/A) | yarn add [package] [--tilde/-T]| 添加同一次版本的包,如指定版本为1.2.3,可接受1.2.x的其他版本,但不接受1.3.x的版本 |
| npm install --global [package] | yarn global add [package] | 添加全局包 |
| npm rebuild | yarn install --force| 重建 |
| npm uninstall [package] | (N/A)| 删除本地依赖包 |
| npm uninstall --save [package] | yarn remove [package]| 删除正式依赖包|
| npm uninstall --save-dev [package] | yarn remove [package]| 删除开发依赖包 |
| npm uninstall --save-optional [package] | yarn remove [package] | 删除可选依赖包 |
| npm cache clean | yarn cache clean| 清除缓存 |
| rm -rf node_modules && npm install | yarn upgrade | 更新包管理器自身 |
-
作者:Shellway Ho
转载请注明出处! 来源: http://docs.shellway.cn/learning-yarn/
';
从NPM客户端迁移
最后更新于:2022-04-02 01:01:58
大多情况,从npm客户端迁移至Yarn客户端都是很方便的。
package.json文件依然可用,你只要在已有目录执行以下命令即可:
```
$ yarn
```
![切换成yarn客户端](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/0c5dc2743a69caab96fd38f55a217675_570x193.png)
要添加依赖,你可以使用:
```
$ yarn add
```
执行以上两个命令后,yarn都会在项目根目录创建或更新yarn.lock文件。如果你要将项目发布或者共享给同事,请确保包含yarn.lock文件。
执行以上两个命令中的任一个,项目都会转换成yarn客户端。So easy,对吧?!
执行完成如图:
![yarn安装执行成功](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/d196344ada3ec018fa950019ef96002c_570x237.png)
执行成功
![执行完yarn命令之后](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/4d7189b2f542f7d12ad6dbfcc72e486d_568x303.png)
执行报错
如果有错误,yarn会给你生成一个yarn-error.log,是不是很Nice,很暖男呢?
这时,你可以先删除node_modules目录,再次执行 `$ yarn`。
-
作者:Shellway Ho
转载请注明出处! 来源: http://docs.shellway.cn/learning-yarn/
';
命令列表
最后更新于:2022-04-02 01:01:56
#### 常用命令:
创建项目:`yarn init`
安装依赖包:`yarn` == `yarn install`
添加依赖包:`yarn add`
#### Yarn命令列表
| 命令 | 操作 | 参数 | 标签 |
| --- | --- | --- | --- |
| yarn add | 添加依赖包 | 包名 | --dev/-D |
| yarn bin | 显示yarn安装目录 | 无 | 无 |
| yarn cache | 显示缓存 | 列出缓存包:`ls`,打出缓存目录路径:`dir`,清除缓存:`clean` | 无 |
| yarn check | 检查包 | | |
| yarn clean | 清理不需要的依赖文件 | | |
| yarn config | 配置 | 设置:`set `, 删除:`delete`, 列出:`list` | [-g \| --global] |
| yarn generate-lock-entry | 生成锁定文件 | 无 | 无 |
| yarn global | 全局安装依赖包 | yarn global [--prefix] | --prefix 包路径前缀 |
| yarn info | 显示依赖包的信息 | 包名 | --json:json格式显示结果 |
| yarn init | 互动式创建/更新package.json文件 | 无 | --yes/-y:以默认值生成package.json文件 |
| yarn install | 安装所有依赖包 | | --flat:只安装一个版本;--force:强制重新下载安装;--har:输出安装时网络性能日志;--no-lockfile:不生成yarn.lock文件;--production:生产模式安装(不安装devDependencies中的依赖) |
| yarn licenses | 列出已安装依赖包的证书 | ls:证书列表;generate-disclaimer:生成免责声明 | |
| yarn link | 开发时链接依赖包,以便在其他项目中使用 | 包名 | |
| yarn login | 保存你的用户名、邮箱 | | |
| yarn logout | 删除你的用户名、邮箱 | | |
| yarn list | 列出已安装依赖包 | | --depth=0:列表深度,从0开始 |
| yarn outdated | 检查过时的依赖包 | 包名 | |
| yarn owner | 管理拥有者 | ls/add/remove | |
| yarn pack | 给包的依赖打包 | --filename | |
| yarn publish | 将包发布到npm | | --tag:版本标签;--access:公开(public)还是限制的(restricted) |
| yarn remove | 卸载包,更新package.json和yarn.lock | 包名 | |
| yarn run | 运行package.json中预定义的脚本 | | |
| yarn self-update | yarn自身更新--未实现 | | |
| yarn tag | 显示包的标签 | add/rm/ls | |
| yarn team | 管理团队 | create/destroy/add/rm/ls | |
| yarn test | 测试 = yarn run test | | |
| yarn unlink | 取消链接依赖包 | | |
| yarn upgrade | 升级依赖包 | | |
| yarn version | 管理当前项目的版本号 | --new-version :直接记录版本号;--no-git-tag-version:不生成git标签 | |
| yarn why | 分析为什么需要安装依赖包 | 包名/包目录/包目录中的文件名 | |
-
作者:Shellway Ho
转载请注明出处! 来源: http://docs.shellway.cn/learning-yarn/
';
使用流程
最后更新于:2022-04-02 01:01:54
[TOC]
### 安装
#### MacOS
##### Homebrew
~~~
brew update ##我的机器上无需这一步,Homebrew在install之前会自动update
brew install yarn
~~~
#### Windows
1、下载`.smi`按装包。确保Node.js已经安装并可用。
[>下载Yarn安装包](https://yarnpkg.com/latest.msi)
2、通过Chocolatey安装
[Chocolatey](https://chocolatey.org/)是Windows平台下的包管理器。
安装好后打开命令行,执行下面的命令:
`choco install yarn`
#### Linux
##### 1、Debian/Ubuntu Linux
编辑软件源:
~~~
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
~~~
执行安装:
`sudo apt-get update && sudo apt-get install yarn`
##### 2、CentOS / Fedora / RHEL
通过RPM包安装:
`sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo`
如果没有Node.js,先配置一下:
`curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -`
然后再用yum安装:
`sudo yum install yarn`
##### 3、Arch Linux
`yaourt -S yarn`
##### 4、Solus
`sudo eopkg install yarn`
最后检查安装是否成功:
`yarn --version`
### 换上淘宝源,加速安装过程
```
$ yarn config set registry "https://registry.npm.taobao.org"
```
### Yarn版本升级
运行以下命令,可以升级Yarn:
~~~
# Method 1: 确保安装了Homebrew
$ brew upgrade yarn
~~~
```
# Method 2: 下载官方脚本来升级
$ curl -o- -L https://yarnpkg.com/install.sh | bash
```
### 常用使用流程
1. 创建新项目 - Creating a new project
2. 添加、更新、移除依赖包 - Adding/updating/removing dependencies
3. 安装、重装依赖包 - Installing/reinstalling your dependencies
4. 使用版本控制系统,如git - Working with version control (i.e. git)
5. 持续集成 - Continuous Integration
### 开启新项目
`yarn init`
### 管理依赖包
#### 1、添加依赖
~~~
yarn add [package] # 通过名称添加一个依赖包
yarn add [package]@[version] #“包名@版本号”格式
yarn add [package]@[tag] #“包名@标签”格式
~~~
#### 2、更新依赖包
~~~
yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]
~~~
#### 3、删除依赖包
`yarn remove [package]`
#### 4、安装项目依赖包
~~~
yarn
yarn install
~~~
就是这么简单,就是这么任性~~
~~~
好吧,来复杂点的
-----------------
1、安装(package.json中)所有依赖包: yarn or yarn install
2、安装依赖包的单版本(仅安装一个版本):yarn install --flat
3、强制所有包都预下载:yarn install --force
4、仅安装生产环境依赖包:yarn install --production
~~~
嗯,就这样!
关于怎么为Yarn世界做贡献,请参考[官网](https://yarnpkg.com/en/docs/creating-a-package)!
-
作者:Shellway Ho
转载请注明出处! 来源: http://docs.shellway.cn/learning-yarn/
';
概念理解
最后更新于:2022-04-02 01:01:52
> yarn:/jɑːn/,纱线,奇谈,故事。
Yarn为Node.js平台的代码包管理器。类似于知名的npm包管理器,实际是npm客户端。
特点:快速、安全、可靠。
1、离线模式:依赖包只要被装过一次,就会被缓存到本机,再次安装时直接从缓存中读取。
2、高确定性:无论安装顺序如何,同样的依赖包都将会以完全一样的方式安装。
3、网络性能优异:将请求高效队列化,
Yarn可以将安装时间从数分钟减少至几秒钟。Yarn还兼容nom注册表,但包安装方法有所区别。其使用了lockfiles和一个决定性安装算法,能够为参与一个项目的所有用户维持相同的节点模块(node_modules)目录结构,有助于减少难以追踪的bug和在多台机器上复制。
Yarn官网地址:https://yarnpkg.com/
-
作者:Shellway Ho
转载请注明出处! 来源: http://docs.shellway.cn/learning-yarn/
';