Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9138

プロジェクトの Yarn (v1.x) のバージョンを固定する(小ネタ)

$
0
0
結論 zsh % yarn policies set-version $(yarn -v) 動機 Yarn 1.x は速くて便利ですが、バージョンや環境の違いにより、yarn install が実行されると yarn.lock を書き換えてしまうことがあります。 git pull でコンフリクトが起きたりして地味に嫌です。 対策 その1: engines の指定と強制 .npmrc へ次のように指定すると、engines の設定を強制することができます。 .npmrc engine-strict=true また、 engines.npm へバージョン番号以外の文字列を指定すると、npm install は使えなくなります。 package.json { "engines": { "node": ">=12.13", "npm": "use_yarn_instead" } } zsh % npm install npm ERR! code EBADENGINE npm ERR! engine Unsupported engine npm ERR! engine Not compatible with your version of node/npm: yarnpkg@1.0.0 npm ERR! notsup Not compatible with your version of node/npm: yarnpkg@1.0.0 npm ERR! notsup Required: {"npm":"use_yarn_instead"} npm ERR! notsup Actual: {"npm":"7.22.0","node":"v14.17.6"} npm ERR! A complete log of this run can be found in: npm ERR! /Users/zenn/.npm/_logs/2021-09-08T05_12_38_243Z-debug.log その2: yarn のバージョンを指定する 上記のように engines.yarn へバージョンを決め打ちすることも可能ですが、クローンした側の負担軽減には寄与しないため採用しません。 package.json "engines": { // Bad! "yarn": "=1.22.11" } 代わりに yarn policies を利用します。 zsh % yarn policies set-version $(yarn -v) # もしくは特定バージョン プロジェクト下に .yarn と .yarnrc が作成されます。 zsh % tree -a . . ├── .npmrc ├── .yarn │   └── releases │   └── yarn-1.22.10.cjs ├── .yarnrc └── package.json 2 directories, 4 files こうすることで yarn さえインストールされている環境であれば、依存パッケージのインストール時に yarn のバージョンを揃えてくれます。 zsh # インストールされているバージョンは v1.22.5 % yarn -v 1.22.5 # プロジェクトフォルダへ移動してインストールすると... % cd your-project % yarn install yarn install v1.22.10 # <-- 指定したバージョンを使ってくれる info No lockfile found. [1/5] 🔍 Validating package.json... [2/5] 🔍 Resolving packages... [3/5] 🚚 Fetching packages... [4/5] 🔗 Linking dependencies... [5/5] 🔨 Building fresh packages... success Saved lockfile. ✨ Done in 0.04s. その3: yarn (berry) は拒否する yarn v2 (berry) 以降のバージョンでは、その1のような旧い形式の .npmrc を適用してくれないため、あらたに .yarnrc.yml を作成します。 zsh % echo "yarn-path: \".yarn/release/yarn-$(yarn -v).cjs\"" > .yarnrc.yml .yarnrc.yml yarn-path: ".yarn/release/yarn-1.22.11.cjs" これで yarn (berry) で yarn install しても v1 の指定バージョンが使われます。

Viewing all articles
Browse latest Browse all 9138

Trending Articles