## 経緯
久々に[[pnpm]]を試してみたらいい感じだったので、[[Bun]]を使えないプロジェクトで実際に試してみたくなった。
## 移行
### パッケージマネージャーをpnpmに変更
まずは[[corepack]]を使って[[パッケージマネージャー]]を[[pnpm]]にする。
```console
corepack enable
```
### ロックファイルの変換
[[ロックファイルを変換 (pnpm)|ロックファイルを変換]]するため、`pnpm import`コマンドを使う。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://pnpm.io/img/favicon.png" />
<span class="link-card-v2-site-name">pnpm.io</span>
</div>
<div class="link-card-v2-title">
pnpm import | pnpm
</div>
<div class="link-card-v2-content">
pnpm import generates a pnpm-lock.yaml from another package manager's lockfile. Supported source files:
</div>
<img class="link-card-v2-image" src="https://pnpm.io/img/ogimage.png" />
<a href="https://pnpm.io/cli/import"></a>
</div>
```console
$ pnpm import
Packages are hard linked from the content-addressable store to the virtual store.
Content-addressable store is at: /home/tadashi-aikawa/.local/share/pnpm/store/v3
Virtual store is at: node_modules/.pnpm
WARN 12 deprecated subdependencies found:
[email protected],
[email protected],
[email protected],
[email protected],
[email protected],
[email protected], re
[email protected],
[email protected],
[email protected],
[email protected],
[email protected],
[email protected]
Progress: resolved 473, reused 0, downloaded 1, added 0, done
```
`pnpm-lock.yaml`が作成されていることを確認したら、`package-lock.json`は消す。
```console
rm package-lock.json
```
### パッケージの再インストール
```console
rm -rf node_modules
pnpm i
```
### コマンドをpnpmに書き換える
`npm`を`pnpm`に書き換え。
## オマケ
[[📜2024-04-14 Node.jsのObsidianプラグインプロジェクトをBunに移行してみた]] を参考に以下3つの対応も行う。
- [x] Taskfileのdevコマンド廃止
- [x] リリース手順変更
- [x] Huskyのdeprecatedを修正
ついでにそれ以外も。
- [ ] [[Prettierでimportを最適化]]
### バージョンアップ
```
dependencies:
- ts-deepmerge 7.0.0
+ ts-deepmerge 7.0.1
devDependencies:
- @tsconfig/svelte 5.0.2
+ @tsconfig/svelte 5.0.4
- esbuild-svelte 0.8.0
+ esbuild-svelte 0.8.1
- husky 9.0.11
+ husky 9.1.3
- prettier 3.2.5
+ prettier 3.3.3
- prettier-plugin-svelte 3.2.1
+ prettier-plugin-svelte 3.2.6
- svelte 4.2.11
+ svelte 4.2.18
- tslib 2.6.2
+ tslib 2.6.3
- typescript 5.3.3
+ typescript 5.5.4
```