.npmignore
に正確に何を入れるべきですか?
テスト? .travis.yml
、.jshintrc
のようなものですか?モジュールの実行時に必要ではないもの(readmeを除く)
これに関するガイダンスが見つかりません。
おそらくお気づきのように、NPMは実際に何を入力すべきかを具体的に述べておらず、むしろ デフォルトで無視されるファイルのリスト を持っています。 .gitignore
が存在しない場合、デフォルトで.npmignore
のすべてがnpm
で無視されるため、多くの人はそれを使用しません。さらに、多くのファイルは、設定に関係なくデフォルトですでに無視されており、一部のファイルは上記のリンクで概説されているように、常に無視から除外されています。
これは基本的に.gitignore
のサブセットであるため、常に存在すべきものについてはあまり公式ではありませんが、5年ほどの間ノードを使用して集めたものから、私が思いついたものを以下に示します。
注:productionとは、モジュールが誰かによって使用されており、モジュール自体で開発しないことを意味します。
.coffee
ファイルを含めないでください。ただし、Gitリポジトリで追跡し続けます。node-gyp
のようなものを使用している人は、ビルド中に生成されてパッケージに入れないオブジェクトファイルを持っている可能性があります。.gitignore
に入るはずです。 .npmignore
ファイルを既に使用している場合は、npmの観点から.gitignore
をオーバーライドするため、これらをここに配置する必要があります。.travis.yml
などのコードは、コードの使用、テスト、表示には必要ありません。CNAME
ファイルまたはプレースホルダーindex.html
sを散らかす必要はありません。 gh-pages
リポジトリとしての二重の役割も果たします。npm install
を実行するときは、npmのみに依存し、他の外部ソースには依存しないようにします。基本的に、npmパッケージから除外したいが、npmリポジトリから除外したくないものがある場合は、これを使用する必要があります。それはアイテムの長いリストではありませんが、npmはパッケージ内の無関係なオブジェクトで人々をスタックさせるよりもむしろ機能を組み込みます。
私は lanteの短くて総合的な答え と SamTの大きな答え に同意します:
それらの答えへの私の貢献:
。npmignore は、パッケージファイルを選択するためのblacklistの方法です。しかし、より実用的な方法では、whitelistパッケージに含める必要があるファイル filesフィールドを使用 パッケージに.json:
{
"files": [
"lib/",
"index.js"
]
}
私はそれがより簡単で、将来の証拠であり、より良いセマンティクスを持っていると思います;)
明確にするために、誰かが_npm install your-library
、npmは、レポジトリに含まれるすべてのソースファイルをダウンロードします。ただし、.npmignore
。
あなたのライブラリをインストールする人はあなたのライブラリを実行するだけでよいことを知ってください、他のものは必要ありません。
たとえば、誰かがライブラリをインストールするとき、おそらくあなたは.travis.yml
または.jshintrc
ファイル、またはいくつかの画像、Gruntファイル、ドキュメントなど。
.npmignore
npmパッケージのファイル数を減らし、ダウンロードを高速化することができます
テストを含めないでください。多くの場合、テストは実際のコードベースの5倍のサイズになります。テストがGithubなどで行われている限り、それで十分です。
しかし、絶対にすべきことは、NPMパッケージを公開された形式でテストすることです。実際のコードベースに存在するが、テストスイートの一部ではないいくつかのスモークテストを作成します。
パッケージをtarballした後にテストする方法については、こちらをご覧ください: https://github.com/ORESoftware/r2g