某パッケージのイシューを眺めていたら、ファイルが多すぎてnpm install
が遅いのでfiles
フィールドを使おうやというようなプル・リクエストが投げられていた。そこではあっさりと却下され、他にあった同様のプル・リクエストで少し議論(ケンカ)がなされていた。どちらにも一理あり、興味深かった。
プル・リクエストを投げたdeepsweet(様々なプロジェクトに同様のプル・リクエストを送っているようだ)は、files
フィールドを使わない問題点として、インストールするファイルが多くなることがあるとしている。例えば100MBくらいテスト関係のファイルがあったらひどいことになるじゃないか、とも言い、そのことはnpm install
が遅いという問題の理由のひとつと主張してもいる。また.gitignore
をメインに据えたブラックリスト方式だと、どうしてもプライベートなファイルがうっかり流出してしまうことが避けられないともしている。
対して.gitignore
だけで良いとしてこのプル・リクエストを取り込まなかった開発者側は、npm explore
を使ってテストを走らせたいとしており、そのためテスト関係のファイルは必要だと言う。npm install
が遅い問題はファイルの量やサイズではなく、もっと別のところにあり、それはパッケージ開発者ではなくnpmの開発者が責任を持って改良すべきところだとしている。ホワイトリスト方式については、必要なファイルの追加を忘れるという問題を避けることが難しく、そのことは壊れたパッケージを公開することに直結するのでよくないのではないかとしていた。
双方がそれぞれ気にしているデメリットへのとらえ方の溝がとても深そうだ。
僕はfiles
フィールドで安全に倒すという考え方は、面倒だなと感じることもしばしばあるが、悪くはないと考えている。しかし、そういったfiles
フィールドを使った運用で起こりうる壊れたパッケージを公開してしまうということは、他人のプロジェクトを破壊してしまうと言いかえることができるとも考えるようになった。そうなるとnpm install
が遅くなる問題よりも避けるべき大きな問題と言えそうだ。
少しずつfiles
フィールドを削除する方向で調整していきたい。