Mac
nkf

macで特定ディレクトリ以下の改行コードをLFにする

概要

git add をしたら

$ git add .
warning: CRLF will be replaced by LF in public//vendor/hoge.js.
The file will have its original line endings in your working directory.

と言われる。

元CRLFのファイルをgitにコミットするとLinuxにデプロイしたときに
diffが永遠に出続ける謎の呪いにかかって解けなくて詰むことがある。

これを防ぐために事前に改行コードをLFにしてからコミットしましょう。

nkfをインストール

改行コード置換なら、nkfがいいよとみんなが言ってる。
Macにはデフォでnkfが入っていない。
なのでnkfをMacに入れることにする。

$ brew update
$ brew install nkf

特定のディレクトリ以下の改行コードをまるっと置換

./public/vendor配下のファイルを全部LFにする。

$ find ./public/vendor -type f \( -name "*.js" -o -name "*.css" -o -name "*.md" -o -name "*.txt" -o -name "*.json" -o -name "*.scss" -o -name "*.less" -o -name "*.html" -o -name "*.svg" -o -name "*.php" \) | xargs nkf --overwrite -Lu

これで世界に平和が訪れます。

2018/01/15修正
find ./public/vendor -type fだとバイナリファイルも一緒に処理してしまってヤバいことになることが分かったので、拡張子をちゃんと指定してやることにしました。
find ./public/vendor -type fは世界に平和ではなく災いが訪れます。
良い子のみんな、気をつけて。