npm v7 Series - Why Keep package-lock.json?
https://blog.npmjs.org/post/621733939456933888/npm-v7-series-why-keep-package-lockjson
yarn.lockとpackage-lock.jsonの違い
yarn.lockはパッケージバージョンの一意な解決が保証される
package-lock.jsonは加えてnode_modulesのレイアウトも一意に保証する
lefb766.icon
node_modulesのレイアウトが一意じゃないことの問題は、package.jsonに書かれていないモジュールも暗黙的にrequireできてしまうことが根本だという気がする
明示的に宣言されたパッケージしかrequireできないように(node_modules直下に展開しないように)できるといい
npm alternativeのアプローチ
pnpmはすべてのパッケージをnode_modules/.pnpmに書き込んで、よしなにsymlinkを張ることでこれを実現している
パッケージ置き場のパスはwell knownじゃないと問題が起こるかも
node_modules/を走査するツールが誤動作したりする
Yarn PnP https://classic.yarnpkg.com/en/docs/pnp/
node_modulesをFUSEで仮想化するのが機能的に最良の解決法
実装がOS別になってしまうしピュアNode.jsでは多分実装不可
Mac版FUSE
WindowsのProjFS