最近yarnからnpmに戻っていたんですが、pnpmが良さそうだなと思ったので移行してみた。
corepackも良さそうだなと思っていたのですが、動向がわからない部分もあってちょっと見送りました。なので、Voltaからインストールしています。
npmからpnpmへの移行
やったことは大体これ
- rm -rf node_modules
 - package.jsonにpreinstallでpnpmを強制する記述を追加
- “preinstall”: “npx only-allow pnpm”,
 
 - pnpm import
 - rm package-lock.json
 - pnpm i
 
これでpnpmに移行できました。
Github Actionsの置き換え
Github Actions側も書き換える必要があるので対応しました。
jobs:
  check:
    runs-on: ubuntu-latest
    timeout-minutes: 5
    strategy:
      matrix:
        node-version: [20]
    steps:
      - uses: actions/checkout@v4
      - name: Install pnpm
        uses: pnpm/action-setup@v4
        with:
          version: 9
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: 'pnpm'
      - name: Install dependencies
        run: pnpm install --frozen-lockfile
Node.jsのバージョン指定周りをvolta-cli/actionにしていたのですが、pnpmとの組み合わせが何やらうまくいかず、一旦setup-nodeにしました。合わせてpnpm/action-setupも入れています。
参考
やってみて感じること
ディスク効率の良さと、それられに伴うインストールの速さが魅力と思っていたのですが、依存周りがきれいになるのでバンドルサイズを下げられるというのも良さそう思いました。
webpackのバンドルを調べて見えてきたnpmの問題点とpnpmに乗り換えたい話 #JavaScript - Qiita