search
LoginSignup
51
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

yarnのコマンドチートシート

yarnのコマンドチートシート

とりあえずよく使いそうなコマンドを列挙しておきます。
まだまだ少ないですが、新しいコマンドを使ったら随時追加していきます。

yarn init

コマンド 説明
yarn init 新規プロジェクト作成
yarn init -y プロジェクト名やVersionの入力を省略して新規作成

yarn add

コマンド 説明
yarn add <package...> パッケージ追加
yarn add <package...>@[version] バージョン指定でパッケージ追加
yarn add <package...>@[tag] タグ指定でパッケージ追加
yarn add <package...> [--dev|-D] devDependenciesにパッケージ追加
yarn add <package...> [--peer|-P] peerDependenciesにパッケージ追加
yarn add <package...> [--optional|-O] optionalDependenciesにパッケージ追加
yarn add <package...> [--exact|-E] バージョンを厳密に指定してパッケージ追加
yarn add <package...> [--tilde|-T] 指定したminorバージョンまでを固定してパッケージ追加

peerDependenciesについて

公式にはreact-domとreactのような依存関係のようなものとあります。
react-domを動かすにはreactが必要で特定バージョンを優先して使用したい場合
などといった場合はこの追加オプションを使用するのだと思います。
※解釈間違っていたらご指摘くださいm(__)m

optionalDependenciesについて

公式には全てのマシンで動作させる必要がない場合とあります。
例としてWatchmanが上がっています。

--exact/-E オプションについて

デフォルトだとmajorバージョンが同一で最新のリリースバージョンが追加されるようになっているので、
特定バージョンのみを追加したい場合はこちらのオプションを使います。
以下具体例になります。

# fooパッケージの最新バージョンは1.9.1とします
# オプション指定なしの場合
$ yarn add foo@1.2.3  # 1.9.1が追加されます

# オプション指定ありの場合
$ yarn add foo@1.2.3 --exact  # 1.2.3が追加されます

--tilde/-T オプションについて

指定したminorバージョンまでを固定してパッケージを追加したい場合に使います。
以下具体例になります。

# fooパッケージに1.2.9と1.3.0(最新)のバージョンが存在するとします
# オプション指定なしの場合
$ yarn add foo@1.2.3  # 1.3.0が追加されます

# オプション指定ありの場合
$ yarn add foo@1.2.3 --tilde  # 1.2.9が追加されます

yarn install

コマンド 説明
yarn install インストール
yarn install --check-files インストール + node_modulesにあるファイルが削除されていないことを確認
yarn install --flat インストール + パッケージ毎に一つのバージョンのみを許可
yarn install --force 強制インストール
yarn install --ignore-scripts インストール + package.jsonに書かれているscriptsは実行しない
yarn install --production[=true|false] インストール + production用インストールをする(しない)の制御

--flatオプション

実行すると以下のように対話モードでバージョンを選択していきます。

$ yarn install --flat
yarn install v0.27.5
info No lockfile found.
[1/4] Resolving packages...
info Unable to find a suitable version for "core-js", please choose one by typing one of the numbers below:
  1) "core-js@^2.5.0, core-js@^2.4.0" which resolved to "2.5.1"
  2) "core-js@^1.0.0" which resolved to "1.2.7"
Answer?: 1

インストールが完了するとpackage.jsonの中はこうなります。
※抜粋

package.json
  "resolutions": {
    "core-js": "2.5.1",
    "strip-ansi": "3.0.1",
    "supports-color": "4.4.0",
    "ansi-regex": "2.1.1",
    "jsesc": "1.3.0",
    "minimist": "0.0.8",
    "acorn": "5.1.2",
    "ajv": "5.2.2",
    "yargs": "8.0.2",
    "inherits": "2.0.3",
    "string_decoder": "0.10.31",
    "punycode": "1.4.1",
    "hash-base": "2.0.2",
    "camelcase": "4.1.0",
    "cliui": "3.2.0",
    "kind-of": "3.2.2",
    "is-number": "2.1.0",
    "string-width": "2.1.1",
    "is-fullwidth-code-point": "2.0.0",
    "assert-plus": "0.2.0"
  }

--productionオプション

このオプションを指定してインストールすると、devDependenciesに記載しているパッケージはインストールされません。なので、production環境にインストールする際にはこちらのオプションをつけてインストールするといいと思います。

また、公式にも書いてありましたが、yarnは通常環境変数のNODE_ENVを見て環境判別をしていて、NODE_ENVproductionが設定されていればこのオプションがなくてもproduction用インストールがされます。

このオプションはNODE_ENVが設定されていてもその設定を無視し、オプションに与えられた設定を優先します。

yarn config

コマンド 説明
yarn config list 現在の設定を表示
yarn config get <key> <key>の設定を標準出力
yarn config set <key> <value> [-g|--global] <key>の設定に<value>を追加
yarn config delete <key> <key>の設定を削除

cacheディレクトリの変更コマンド

yarn config set cache-folder <path>

yarn cache

コマンド 説明
yarn cache list cacheされているパッケージの一覧表示
yarn cache dir cache先のディレクトリパスを表示
yarn cache clean <module_name> のキャッシュ削除

yarn info

コマンド 説明
yarn info <package> <package>の情報を表示
yarn info <package>@[version] <package>の特定バージョンの情報を表示
yarn info <package> [<field>] <package>の<field>情報のみを表示
yarn info <package> --json <package>の情報をjsonで表示

こちらのコマンドは特定パッケージの情報を表示するコマンドですが、
特徴としてローカルにインストールされている必要はないというところです。

field指定サンプル

# reactのdescriptionを見たい時
$ yarn info react description

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
51
Help us understand the problem. What are the problem?