package.json及び package-lock.json に以下のような記述が勝手に追加される/削除しても復活するという現象に悩まされました:
"dependencies": {
"my-local-package": "file:"
}
このような "file:○○" は、ローカルのフォルダを npm パッケージとしてリンクしている状態を意味します。
例えば、ローカルにある my-local-package フォルダをリンクした状態だと、上記のように package.json に自動的に追加されます。
しかし、意図的に削除しても再び勝手に追加されてしまうことがあります。
🤔 なぜ勝手に戻ってくるの?
これは、過去に npm link や npm install ../path/to/folder などでローカルパッケージをリンクした履歴が残っており、
そのリンク情報が node_modules や package-lock.json に保持されているためです。
解決方法:npm unlink を使う。
⬇️ 手順
- package.json と package-lock.json のあるプロジェクトルートに移動
- npm unlink でリンク解除
npm unlink my-local-package
3.不要なら node_modules と package-lock.json を削除してクリーンにする(オプション)
rm -rf node_modules package-lock.json
npm install
4.package.json から "file:..." の記述を削除
📝 補足
-
npm unlink は、プロジェクトとローカルパッケージとのリンクを解除するコマンドです。
-
リンクされた状態では npm install のたびに package.json が書き換えられることがあります。
-
完全にローカルパッケージを使わない場合は、リンクを解除し、通常の npm パッケージとして扱うのが安全です。