deepthan/Front-end-resource-collection

yarn用法

deepthan opened this issue · 0 comments

Yarn 是由 Facebook,google,Exponent 和 Tilde 制作的一种新的JavaScript 软件包管理器。其目的是解决团队在 npm 面临的问题:

  • 安装包不足够 快/连续
  • 有安全隐患,npm 允许安装包执行代码
    yarn 是从 npm 注册表获取模块的唯一的一个新的CLI客户端。对注册表本身没有任何的改变——你依旧可以跟以前一样获取和发布包。

Yarn vs npm: 功能上的差异

  • yarn.lock 文件: 每次安装一个包它的版本会自动写入lock文件,下次下载的时候会直接下载这个版本,而npm不会自动创建
  • 平行安装 :yarn 并行的执行下载任务而npm是按顺序下载
  • 更简洁的输出(cleaner output):yarn输出信息非常少而npm 的输出非常详细

一. 怎么安装yarn?

  • 通过npm来安装
npm install yarn -g

二. 下包慢咋办?设置淘宝代理!(下的还是原来的包,只是从淘宝端走的流量)

yarn config set registry https://registry.npm.taobao.org

三. 怎么用?

  • 我想下载typescript

安装到 package.json的"devDependencies"下

 npm  install --save-dev typescript

yarn是酱紫滴

yarn add typescript --dev

安装到 package.json的"dependencies"下

 npm  install --save typescript

yarn是酱紫滴

yarn add typescript

安装全局依赖包

npm install -g typescript

yarn是酱紫滴

yarn add global typescript
  • 才发现我用的是php,卸载吧
npm uninstall typescript
yarn remove  typescript
  • 不对,我又回来做前端项目了,yarn可以做什么呢?
    1. yarn add : 下载包
    2. yarn remove : 卸载包
    3. yarn init: 初始化package.json
    4. yarn installyarn: 安装所用 package.json 文件中的依赖包
    5. yarn self-update :更新yarn,我都控制不住我记几。

四. 其他命令

  • yarn licenses [ ls | generate-disclaimer ]
    yarn licenses ls 列出了所有安装包的许可证。
    其实你可以在 yarn.lock文件里面查看依赖包的所有相关信息:

    • version
    • resolved
    • dependencies

    yarn licenses generate-disclaimer生成一个免责声明包含所有执照的所有包的内容。

// yarn licenses ls

├─ License: MIT
│  └─ URL: http://github.com/yargs/yargs.git
├─ yargs@7.1.0
│  ├─ License: MIT
│  └─ URL: http://github.com/yargs/yargs.git
├─ yargs@8.0.2
│  ├─ License: MIT
│  └─ URL: http://github.com/yargs/yargs.git
├─ yeast@0.1.2
│  ├─ License: MIT
│  └─ URL: https://github.com/unshiftio/yeast.git
├─ yn@2.0.0

**在你的项目中,你必须包括项目的许可证,在这些状态下,这是一个相当有用的工具。

  • yarn why [ package ]
    让你弄清楚你的包为什么会被下载。
// yarn why sass-loader
yarn why v1.3.2
warning You are using Node "7.7.1" which is not supported and may encounter bugs or unexpected behavior. Yarn supports the following semver range: "^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0"
[1/4] Why do we have the module "sass-loader"...?
[2/4] Initialising dependency graph...
[3/4] Finding dependency...
[4/4] Calculating file sizes...
info This module exists because "@angular/cli" depends on it.

Angular 里面用yarn

Angular Cli的包管理器预设为NPM,当执行 ng new 时会产生新的项目并以npm来下载所有的依赖。
更改包管理器为yarn

ng set --global packageManager=yarn

之后下载新的依赖包将会用yarn来下载,比NPM快很多。
如果想更改回预设的NPM

ng set --global packageManager=npm