<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.lockpackage-lock.json と同じ役割のもの 複数人開発でのメンバー間でのバージョン差分をなくすのに使えるnode_modules 直下に生成される(要確認)
node_modules が生成されるyarn --flat コマンドを使用すると、プロジェクト全体でパッケージのバージョンが1つになる(全てルートの node_modules 内にパッケージが flat に存在するようになる)
yarn upgradeyarn upgrade で依存パッケージのアップグレードを行うyarn upgrade-interactive で対話形式でアップグレードを行う
yarn linkSymbolic 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 とか)子で共通の依存パッケージを使用している場合は、巻き上げて、同じパッケージを参照するようになる(ボリュームの削減)