<aside> ◻️ L I F E
<aside> 📝 2022/12/25 知識系はツェッテルカステンベースで再整理中(✅ 再整理完了 ‣ )
</aside>
<aside> 💡 目次
</aside>
<aside> 📆 2021/01/27 書いた 自分がよく使う yarn の機能について
</aside>
package-lock.json
が登場する前、バージョン固定に課題感を持った Facebook が開発した
npm-shrinkwrap.json
というのがあったpackage-lock.json
が登場して、デフォルトで生成されるようになった。ここに関する機能の差分はほぼなしyarn.lock
package-lock.json
と同じ役割のもの 複数人開発でのメンバー間でのバージョン差分をなくすのに使えるnode_modules
直下に生成される(要確認)
node_modules
が生成されるyarn --flat
コマンドを使用すると、プロジェクト全体でパッケージのバージョンが1つになる(全てルートの node_modules
内にパッケージが flat に存在するようになる)
yarn upgrade
yarn upgrade
で依存パッケージのアップグレードを行うyarn upgrade-interactive
で対話形式でアップグレードを行う
yarn link
Symbolic link
(略して Symlink
)と呼ばれるようになるyarn link
コマンドを実行、パッケージA内で、yarn link [パッケージBの名前]
でリンクできる.yarnrc
.npmrc
だが yarn の場合は .yarnrc
.npmrc
ファイルを生成し、そこに設定を書き込むようにしている
yarn workspace
複数のパッケージを1つのパッケージにまとめて管理できる yarn workspace
という機能が提供されている
親の package.json
に以下のプロパティを追加するだけで有効化される
private: true
は必須 誤って公開されてしまうのを防ぐ目的workspaces
は、子のパッケージ名を指定する。
packages/
というディレクトリを作って、その中に置くのが慣習packages/*
みたいな感じでワイルドカードで指定も可能{
"private": true,
"workspaces": ["workspace-a", "workspace-b"]
}
package
は "name": "workspace-b"
みたいな感じになる。依存パッケージのインストールはどこでも良いのでいつもどおり yarn install
を実行すれば良い
node_modules
が親に生成される(巻き上げ hoisting
と呼ばれることが多い)nohoist
オプションを付ける
React
とか)子で共通の依存パッケージを使用している場合は、巻き上げて、同じパッケージを参照するようになる(ボリュームの削減)