Yarnの個人的メモ

目次

  1. 1. Yarnとは
  2. 2. npm ci の代わり
  3. 3. npm audit fix 的な使い方
    1. 3.1. package.lock.json の生成だけを行う
    2. 3.2. npm audit fix を実行
    3. 3.3. package-lock.json から yarn.lock を生成する
    4. 3.4. ネタ元
  4. 4. その他
スポンサーリンク
Yarn

久しぶりの技術系記事ですね。今日はこのサイトでも使っている Yarn の話をしてみます。

Yarnとは

Home | Yarn - Package Manager

Yarn is a package manager that doubles down as project manager. Whether you work on one-shot projects or large monorepos, as a hobbyist or an enterprise user, we’ve got you covered.

Node.jsのパッケージ管理ツールです。うちでは hexo やそのプラグインなんかの管理に使ってます。
今日はYarnを使う際に個人的によく使っているオプションなんかを書いてみたいと思います。だいたいネットのパクリ なので逐一元ネタURLがついてきます。

npm ci の代わり

node_modules の削除と yarn install --frozen-lockfile を一緒に実行することで npm ci とほぼ同様の効果を実現できます。
yarnpkg - What is the closest to `npm ci` in yarn - Stack Overflow

1
rm -rf node_modules && yarn install --frozen-lockfile

ちなみに npm ci についてはこちらをどうぞ。
npm-ci | npm Docs

This command is similar to npm install, except it’s meant to be used in automated environments such as test platforms, continuous integration, and deployment – or any situation where you want to make sure you’re doing a clean install of your dependencies.

名前のとおりローカルだとあまり出番はないですね。(毎回 node_modules を削除されちゃたまらんw)

npm audit fix 的な使い方

yarn audit | Yarn

npm audityarn audit もパッケージの脆弱性をチェックするコマンドです。
npm audit fix を使うと修正も同時に実行します。

んで、yarn audit fix は現状存在しないので代替手段として一時的に npm audit fix を使うという方法をとっています。
具体的には以下のとおりです。

package.lock.json の生成だけを行う

package-locks | npm Docs

--package-lock-only をつけると node_modules の更新を行わないそうです。

1
npm install --package-lock-only

npm audit fix を実行

1
npm audit fix

package-lock.json から yarn.lock を生成する

package-locks | npm Docs
yarm import で実現できます。

1
2
3
4
5
6
7
8
# 先に消しておく
rm yarn.lock

# ここで新しい yarn.lock が生成
yarn import

# yarn.lock さえあれば用済みなので削除
rm package-lock.json

ネタ元

yarn-audit-fix パッケージを使う方法も紹介されていますが、yarn-audit-fix パッケージ自体の脆弱性を解決したい場合に対応できなさそうな気がしたのでひとまず見送っています。
How to yarn audit fix | Edvins Antonovs

その他

もういくつか何かあった気がするんですがひとまず思い出したら追記しますw

というかこうしてみると今となっては ぶっちゃけnpmでよかったんじゃないか という気はします。やりたいことはnpmでやれますし。このサイトを作った当初はYarnが高速と言われていたので採用していたんですが流れが変わった気がします。昔は package-lock.json の仕組みがまだなかったことが大きいですね。一応Yarnのほうが少し高速ではあるのかな?

スポンサーリンク