yarn 常用命令

修改日期 2017.12.26

最初接触 yarn 还是在 0.17.10 版本,由于各种各样的原因,使用时没 npm 顺手, 目前 yarn 的版本已经升级为 1.3.2 各种之前遇到的问题不复存在,安装、下载速度都比 npm 要快很多,这里对之前记录做一下修改。

更多详细内容查看中文官方文档 
npm 常用命令

在Nodejs环境下,通过npm install -g yarn 命令进行全局安装

版本说明 (当前文档使用版本)

  • yarn : v0.17.10
  • yarn: v1.3.2 (修改日期 2017.12.26)
  • node: v8.9.0
  • npm: v5.6.0

安装

  1. macOS 通过 homebrew 安装 brew install yarn

  2. Windows 下载安装 下载地址

  3. 查看版本 yarn --version

1. 开始一个新工程

yarn init 与 npm init 一样通过交互式会话创建一个 package.json

    yarn init # yarn
npm init # npm # 跳过会话,直接通过默认值生成 package.json
yarn init --yes # 简写 -y
npm init -y

2. 添加一个依赖

通过 yarn add 添加依赖会更新 package.json 以及 yarn.lock 文件

  1. yarn add <packageName> 依赖会记录在 package.json 的 dependencies 下
    yarn add webpack@2.3.3 # yarn  --save 是 yarn 默认的,默认记录在 package.json 中
npm install webpack@2.3.3 --save # npm
  1. yarn add <packageName> --dev 依赖会记录在 package.json 的 devDependencies 下
    yarn add webpack --dev # yarn 简写 -D
npm install webpack --save-dev # npm
  1. yarn global add <packageName> 全局安装依赖
    yarn global add webpack # yarn
npm install webpack -g # npm

3. 更新一个依赖

yarn upgrade 用于更新包到基于规范范围的最新版本

    yarn upgrade # 升级所有依赖项,不记录在 package.json 中
npm update # npm 可以通过 ‘--save|--save-dev’ 指定升级哪类依赖 yarn upgrade webpack # 升级指定包
npm update webpack --save-dev # npm yarn upgrade --latest # 忽略版本规则,升级到最新版本,并且更新 package.json

4. 移除一个依赖

yarn remove <packageName>

    yarn remove webpack # yarn
npm uninstall webpack --save # npm 可以指定 --save | --save-dev

5. 安装 package.json 中的所有文件

yarn 或者 yarn install

    yarn install # 或者 yarn 在 node_modules 目录安装 package.json 中列出的所有依赖
npm install # npm # yarn install 安装时,如果 node_modules 中有相应的包则不会重新下载 --force 可以强制重新下载安装
yarn install --force # 强制下载安装
npm install --force # npm

6. 运行脚本

yarn run 用来执行在 package.json 中 scripts 属性下定义的脚本

    // package.json
{
"scripts": {
"dev": "node app.js",
"start": "node app.js"
}
}
    yarn run dev # yarn 执行 dev 对应的脚本 node app.js
npm run # npm yarn start # yarn
npm start # npm

与 npm 一样 可以有 yarn start 和 yarn test 两个简写的运行脚本方式

7. 显示某个包信息

yarn info <packageName> 可以用来查看某个模块的最新版本信息

    yarn info webpack # yarn
npm info webpack # npm yarn info webpack --json # 输出 json 格式
npm info webpack --json # npm yarn info webpack readme # 输出 README 部分
npm info webpack readme

8. 列出项目的所有依赖

yarn list

    yarn list # 列出当前项目的依赖
npm list # npm yarn list --depth=0 # 限制依赖的深度
sudo yarn global list # 列出全局安装的模块

9. 管理 yarn 配置文件

yarn coinfig

    yarn config set key value # 设置
npm config set key value yarn config get key # 读取值
npm config get key yarn config delete key # 删除
npm config delete key yarn config list # 显示当前配置
npm config list yarn config set registry https://registry.npm.taobao.org # 设置淘宝镜像
npm config set registry https://registry.npm.taobao.org # npm

10. 缓存

yarn cache

    sudo yarn cache list # 列出已缓存的每个包
sudo yarn cache dir # 返回 全局缓存位置
sudo yarn cache clean # 清除缓存

11. 问题

1. 通过 yarn run 等运行脚本时,会报错

更新版本后,这个问题不会再出现

yarn run run

yarn run v0.17.10
$ webpack-dev-server --progress --colors --config webpack.dev.config.js
fs.js:640
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^ Error: EACCES: permission denied, open '/Users/zhangmingjia/Desktop/document/ceshi/temp/router4-test/node_modules/arr-flatten/index.js'

大概意思是没有权限,然后加上 sudo 又试了一下

sudo yarn run run

yarn run v0.17.10
$ webpack-dev-server --progress --colors --config webpack.dev.config.js
10% building modules 2/2 modules 0 active
Project is running at http://10.15.32.78:8087/
webpack output is served from /Users/zhangmingjia/Desktop/document/ceshi/temp/router4-test/dev
Content not from webpack is served from /Users/zhangmingjia/Desktop/document/ceshi/temp/router4-test/dev
404s will fallback to /index.html
Hash: d374085597660a7a1085
Version: webpack 2.3.3
Time: 5083ms
Asset Size Chunks Chunk Names
js/vendor.js 1.31 MB 0 [emitted] [big] vendor
js/bundle.js 44.5 kB 1 [emitted] app
chunk-manifest.json 43 bytes [emitted]
js/manifest.js 5.88 kB 2 [emitted] manifest
js/vendor.js.map 1.56 MB 0 [emitted] vendor
js/bundle.js.map 43.3 kB 1 [emitted] app
js/manifest.js.map 5.9 kB 2 [emitted] manifest
index.html 1.28 kB [emitted]
Child html-webpack-plugin for "index.html":
Asset Size Chunks Chunk Names
index.html 545 kB 0
webpack: Compiled successfully.

看了别人的博客,貌似没有这个问题啊,而且设置的 webpack devServer.open = true, 可以打开浏览器,但是不会跳转到设定好的页面(用 npm 时 没有这个问题)

2. 安装 package.json 中文件的问题

正常安装 sudo yarn add react@15.4.2 package.json 中 出现

    "dependencies": {
"react": "15.4.2"
}

通过终端查看安装版本 yarn list

    ├─ react@15.4.2
│ ├─ fbjs@^0.8.4
│ ├─ loose-envify@^1.1.0
│ └─ object-assign@^4.1.0

是正确的版本,但是,如果在 package.json 中加上如下依赖,然后通过 sudo yarn install 安装

    "dependencies": {
"react": "15.4.2",
"react-dom": "^15.4.2",
"jquery": "^3.0.0"
}

通过终端查看安装版本 yarn list

    ├─ react-dom@15.5.3
│ ├─ fbjs@^0.8.9
│ ├─ loose-envify@^1.1.0
│ ├─ object-assign@^4.1.0
│ └─ prop-types@~15.5.0
├─ react@15.4.2
│ ├─ fbjs@^0.8.4
│ ├─ loose-envify@^1.1.0
│ └─ object-assign@^4.1.0
├─ jquery@3.2.1

react 还是之前的版本,但是 新安装的 react-dom 和 jquery 都变成了 最新版本

再试试将版本号的写法变一下 去掉 ^

    "dependencies": {
"react": "15.4.2",
"react-dom": "15.4.2",
"jquery": "3.0.0"
}

通过 sudo yarn install 安装 查看安装版本 yarn list

    ├─ react-dom@15.4.2
│ ├─ fbjs@^0.8.1
│ ├─ loose-envify@^1.1.0
│ └─ object-assign@^4.1.0
├─ react@15.4.2
│ ├─ fbjs@^0.8.4
│ ├─ loose-envify@^1.1.0
│ └─ object-assign@^4.1.0
├─ jquery@3.0.0

安装的是正确的版本了

说明
  1. "react-dom": "^15.4.2"这种写法,加了^,是一般是通过npm install --save安装插件生成版本号的默认格式,表示安装15.x.x的最新版本,安装时不改变大版本号

  2. "react-dom": "15.4.2"这种写法,只有版本号,是 yarn add安转后生成版本号的默认格式,表示必须安装同一个版本号

  3. 版本号控制,有一个规范,就是语义化版本号控制,规定了版本号格式为:主版本号.次版本号.修订号;

  • 主版本号:当你做了不兼容的 API 修改
  • 次版本号:当你做了向下兼容的功能性新增
  • 修订号:当你做了向下兼容的问题修正

一般来讲 只要主版本号正确,就可以兼容,但是像 最新版的 react@15.5.3 ,出现了React.createClass与React.PropTypes弃用的警告,控制台一片红,因为引用了第三方组件库,最后选择暂不升级react,类似的情况,个人感觉 yarn 默认的版本号写法(只安装特定版本的文件),更符合需求,npm 的话,很可能导致两个拥有同样package.json 的应用,安装了不同版本的包,进而导致一些BUG

3. 在 yarn 或者 npm 中设置默认版本规则

  1. npm set save-exact true 全局设置 package.json 只记录确切版本号 node: 1.1.1,
  2. npm config set save-prefix '~' 设置安装新模块时,package.json 记录版本号的方式 ~ \ ^ 等
  3. sudo yarn config set save-prefix '~' 通过 yarn 设置,要有 sudo 权限

注意: 通过以上设置可以更改package.json 中记录的版本号默认方式,但是 yarn 的设置是带有 sudo 权限的,通过 sudo add <packageName> 的模块才会按照设置的方式更新版本号

12. 总结

就像官网上说的,yarn 的安装速度快,能并行化操作以最大化资源利用率;安全,Yarn会在每个安装包被执行前校验其完整性。正式版的 yarn 比较与 npm 更高效。

yarn命令使用的更多相关文章

  1. spark on yarn模式:yarn命令杀除当前的application

    在hadoop/bin目录下有yarn命令 yarn application -kill <applicationId>

  2. Hadoop记录-Yarn命令

    概述 YARN命令是调用bin/yarn脚本文件,如果运行yarn脚本没有带任何参数,则会打印yarn所有命令的描述. 使用: yarn [--config confdir] COMMAND [--l ...

  3. Yarn 命令详解

    常用命令 创建项目:yarn init 安装依赖包:yarn == yarn install 添加依赖包:yarn add 配置淘宝镜像:yarn config set registry " ...

  4. web3无法安装的额解决方案-----yarn命令安装web3

    凡是可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写. --Atwood定律(Jeff Atwood在2007年提出) yarn命令详解 https://yarnpkg ...

  5. 吴裕雄--天生自然HADOOP操作实验学习笔记:mapreduce和yarn命令

    实验目的 了解集群运行的原理 学习mapred和yarn脚本原理 学习使用Hadoop命令提交mapreduce程序 学习对mapred.yarn脚本进行基本操作 实验原理 1.hadoop的shel ...

  6. Yarn命令列表

    常用命令: 创建项目:yarn init 安装依赖包:yarn == yarn install 添加依赖包:yarn add Yarn命令列表 命令 操作 参数 标签 yarn add 添加依赖包 包 ...

  7. YARN 命令总结

    起因:YARN 使用capability schedule queue调度container,spark 的app卡死在YARN的队列里面无法出来,无奈请教大神时,可用[yarn applicatio ...

  8. npm与yarn命令对比

    Yarn是由Facebook.Google.Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 Yarn 是为了弥补 npm 的一些缺陷而出现的(比如,npm install时候会 ...

  9. ionic3包还原使用yarn命令执行步骤(解决ionic3懒加载报找不到 module的错误)

    使用cnpm 还原ionic3.6的依赖包的时候 可以正常还原,但是使用懒加载就会报找不到 module 的错误.最简单的解决办法是删除node_modules 挂个vpn 重新执行npm insta ...

随机推荐

  1. 170324、Spring 处理器和Resource

    1.Spring 框架允许开发者使用两种后处理器扩展 IoC 容器,这两种后处理器扩展 IoC 容器,这两种后处理器可以后处理 IoC 容器本身,或对容器中所有的 Bean 进行后处理.IoC 容器还 ...

  2. 阿里云服务器Mysql修改密码

    核心架构基于阿里云服务器CentOS7.2操作系统,全面支持Java Web运行环境   Tomcat 8.5.8 JDK 8u111 MySQL5.7.16 详细信息,请在服务器执行  more r ...

  3. Python--进阶处理5

    # 使用路径名来获取文件名,目录名,绝对路径等import ospath = r'F:\myProject\lean\a'# Get the last component of the pathbas ...

  4. Hibernate与数据库的触发器协同工作

    Hibernate 与数据库中的触发器协同工作时, 会造成两类问题 1触发器使 Session 的缓存中的持久化对象与数据库中对应的数据不一致:触发器运行在数据库中, 它执行的操作对 Session ...

  5. Hadoop伪分布安装详解(五)

    目录: 1.修改主机名和用户名 2.配置静态IP地址 3.配置SSH无密码连接 4.安装JDK1.7 5.配置Hadoop 6.安装Mysql 7.安装Hive 8.安装Hbase 9.安装Sqoop ...

  6. 反编译apk + eclipse中调试smali

    1.对apk使用apktool反编译出可调试的smali代码到out文件夹 apktool -d d 定点加粉丝_com.mingniu.wxddjfs_440.apk -o out 这里必须使用-d ...

  7. python学习笔记(六)— 模块

    一.os.sys模块 import os print(os.getcwd())#取当前工作目录,绝对路径 print(os.chdir("../"))#更改当前目录 print(o ...

  8. PHP 创建中文目录的情况

    因为一个作业需要创建一些中文的目录,其实主要还是考虑一下编码问题. 首先确认下系统环境是什么编码,如果是gbk或者GB2312那就需要转下码,还有些特殊字符,就需要有个特殊的写法. iconv('UT ...

  9. 剑指Offer——数值的整数次方

    题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 分析: 快速幂,简单解释下, 当e的二进制为1001011, b^e=b^( ...

  10. 【opencv安裝】opencv2和opencv3共存——安装opencv2和opencv3到指定目录

    安装 opencv2和opencv3共存会导致运行时问题,须分开 下载源码 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/hom ...