【JS】node_modulesはlockファイルがあれば全削除してもほぼ大丈夫だよ!
こんにちは!node_modulesをGitHubにpushしたことのあるMizutani(@sirycity)です。あれやるとやばいよね。
今日はそんなnode_modulesを消す話です。物騒ですね。
結論
node_modulesはlockファイルがあれば大抵の場合は全削除しても大丈夫です。復活できます。すいません、消した結果何かがあっても責任はとれません
はじめに
node_modules、消したくなったことありませんか?僕はあります。ファイルサイズ大きいし。でも、消しても復活できるか不安ですよね。分かりますその気持ち。
node_modulesとは
node_modulesとはnpmとかyarnを使ってインストールしてきたライブラリのコードが凝縮された空間です。中身見てみると面白いです。めっちゃコードあるから。
…とはいえ、基本的にnode_modulesの中身を触ることはないです。だって他人のコードだしね。
node_modulesとpackage.json
node_modulesにはpackage.jsonで指定した中身が入ってます。package.jsonが牛乳ならnode_modulesはカルシウム。
lockファイルについて
npmだとpackage-lock.json
、yarnだとyarn.lock
って名前です。lockファイルはpackage.jsonの結果みたいもの。package.jsonがおつかいメモならlockはレシート。package.jsonが牛乳ならlockはおいしい牛乳。
lockファイルがあればnode_modulesは消してOK
こっからが大事ですが、lockファイルがあればnode_modulesは消してもほとんどの場合でOKです。牛乳の商品名が指定されてれば成分変わらないみたいなイメージ。
実際にlockファイルがある状態でnode_modulesを消してみよう。こんな感じ。
rm -rf node_modules/
んで、消したらもう1回復活させましょう。こんな感じ。npmとyarnでそれぞれこんな風。
npm install
yarn install
はいこれで消したnode_modules元通り。もう1回消しましょうか。
rm -rf node_modules/
もう1回復活させよう。
npm install
yarn install
はい元通り。
例外
…恐ろしい話ですが、lockファイルがあってもnode_modulesが元通りにならない場合があります。レアケースだけどね。
それは実行環境が違うケース。例えばOSが違ったり、nodeのバージョンが違ったり。この辺りはdocker使うなりして揃えましょう。まあそこまでしなくても良い場合も多いと思います。
さいごに
最初のうちは何を消してもよいか分からなくなりがちですよね。皆さんもnode_modules、消してみてくれよな。