🗃

Dropboxでnode_modulesを同期対象から外す

Dropboxの同期処理でmacbookが定期的に激重になる原因として、雑に同期していた案件ごとのnode_modulesが怪しいと思ったのでこいつらを同期の対象から外せないかな〜と思った次第です。

要は.gitignore的な感じでこのファイル・フォルダ名は同期しないでね!ってしたかったので調べました、その備忘録。

ざっくり調べた感じ、対象ファイル・フォルダを

  • エイリアス設定して別ディレクトリに置く
  • カスタム属性(com.dropbox.ignored)を設定する

の2択でした。
前者は、今回除外したいフォルダが既に多い&定期的に増えていく手前ちょっと煩雑になりそうだったので後者を採用しました。

既存のnode_modulesにcom.dropbox.ignored 1を設定してきます。不安なので一旦対象ファイルが抽出できているか確認するためにxattrを除いた状態で実行します。下記を実行するとDropbox以下の/node_modules/がリストアップされます。

find "$HOME/Dropbox/" -type d | grep 'node_modules$' | grep -v '/node_modules/' 

問題なければ下記のコードでカスタム属性を設定していきます。

find "$HOME/Dropbox/" -type d | grep 'node_modules$' | grep -v '/node_modules/' | xargs -I {} -t -L 1 xattr -w com.dropbox.ignored 1 "{}"

下記はプロジェクトが増えた場合の単発処理

xattr -w com.dropbox.ignored 1 "./node_modules"