1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

yarn2に移行してみる

Last updated at Posted at 2022-07-23

yarn2に移行してみる。
依存モジュール丸々コミットしてしまおうというZero-Installsが目玉。

移行作業

ここに書いてる通り

yarnバージョン設定

yarn set version berry

何やら追加された

package.json
  "packageManager": "yarn@3.2.2"

.yarn/releases/yarn-3.2.2.cjs
.yarnrc.yml
.yarn/...

これらはCommitするものなのでCommitする。

node_modules使う場合は、nodeLinkerの設定を行う。
今回は飛ばす。

install

yarn install

なぜかnode_modulesができて
.yarnrc.ymlに
nodeLinker: node-modules
が追記された。

yarn.lockがあると互換性のためにnode-modulesができるようだ。
yarn.lockを消してやり直したらnode-modulesができなかった。

node_modulesがあること前提のモジュールがあるから互換性のために
node-modules残すということか。

node_modules見に行くのは開発ツール系だろうが、
概ね対応しているっぽい。

ツールの対応状況は以下

コミットするファイルを決める

install後、各種ファイルが追加された。
Zero-Installsを使うかによって、何をコミットするか決める。

今回はZero-Installsにするため、.gitignoreに以下追記。

.gitignore
.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

さて、Zero-Installsにした場合、モジュールのファイルサイズが気になるところ。

以下パッケージがある場合でinstallでサイズ比較してみる。

    "@types/react": "^18.0.15",
    "@types/react-dom": "^18.0.6",
    "@typescript-eslint/eslint-plugin": "^5.30.5",
    "@typescript-eslint/parser": "^5.30.5",
    "eslint": "^8.0.1",
    "eslint-config-prettier": "^8.5.0",
    "eslint-config-standard": "^17.0.0",
    "eslint-plugin-import": "^2.25.2",
    "eslint-plugin-n": "^15.0.0",
    "eslint-plugin-promise": "^6.0.0",
    "eslint-plugin-react": "^7.30.1",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "typescript": "^4.7.4"

Zero-Installsの場合
.yarn/cache
31.0 MB
ファイル数: 216

Zero-Installsなし
node_modules下
98.8 MB
ファイル数: 6,440

圧縮してるからファイル数激減は当然として、サイズは3割ぐらいか。
使用するモジュールが対応してればデメリットはない気がする。

エディタ設定

TypeScriptのコンパイルエラーが出ている。
VSCodeの設定を行う。

yarn dlx @yarnpkg/sdks vscode

何やら追加された
.vscode/extensions.json
.yarn/sdks/...

.vscode/settings.json
も追記されている。

TypeScriptやらEslint関連のファイルができてる。

VSCodeでワークスペースのTypeScriptバージョンを使用するように設定。
(.tsとか開いて下にTypeScriptと出てるところをクリックして選択できる)
これでコンパイルエラーがなくなる。
裏で何してるのかはよくわからないができた。

.yarn/sdks/
はCommit推奨。

.vscode/はなんか微妙だがコミットして運用しても良いかも。

なんか初期設定が色々あるのが微妙だが、
誰かがCommitしておけばクローンやブランチ切り替え後のinstallとかもないし、
CICDも早くなりそうなので、良さげ。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?