grunt-initがファイルをカスタマイズしてコピーするcopyAndProcess()
ではgrunt.template.process()
を使っていて、それはgrunt.util.normalizelf()
を最後に呼んでいる。これによりLFのファイルが環境に合わせてノーマライズされるようになっている。そのためWindowsでは常にCR+LFでファイルが吐かれる。
LFで吐かれるようにするにはgrunt.util.linefeed
で\n
を設定してやれば良いのだけど、grunt-init
にはこの設定を変える方法は用意されていない。Issueも立ってるけどGruntに文句言えみたいに返答されていて、それ違うし! みたいな。と、いうことでこれをどうにかしてみようと。
View Commit: Set grunt.util.linefeed
for copyAndProcess()
CR+LFで常に吐かれて問題になるのは、LFなリモートのリポジトリにCR+LFでファイルが投げつけられて変更差分がぐちゃぐちゃになること。grunt-initではほぼGitが前提になっているので、Gitの設定でcore.autocrlf
がfalse
でリモートにそのまま投げるようになっている環境のみでLFになるように調整してやれば良いのじゃないかと考えた。そのため無設定で良きに図らってくれる感じになる。
$ find . -type f | xargs dos2unix -Uv
何かしら本体で対策が成されるまでは、grunt-init foo
した後に続けて、dos2unix
を叩いて凌ぐことにした。