web-dev-qa-db-ja.com

テストを無視する必要がありますか?

.npmignoreに正確に何を入れるべきですか?

テスト? .travis.yml.jshintrcのようなものですか?モジュールの実行時に必要ではないもの(readmeを除く)

これに関するガイダンスが見つかりません。

83
callum

おそらくお気づきのように、NPMは実際に何を入力すべきかを具体的に述べておらず、むしろ デフォルトで無視されるファイルのリスト を持っています。 .gitignoreが存在しない場合、デフォルトで.npmignoreのすべてがnpmで無視されるため、多くの人はそれを使用しません。さらに、多くのファイルは、設定に関係なくデフォルトですでに無視されており、一部のファイルは上記のリンクで概説されているように、常に無視から除外されています。

これは基本的に.gitignoreのサブセットであるため、常に存在すべきものについてはあまり公式ではありませんが、5年ほどの間ノードを使用して集めたものから、私が思いついたものを以下に示します。

注:productionとは、モジュールが誰かによって使用されており、モジュール自体で開発しないことを意味します。


プレリリースのクロスコンパイルされたソース

  • 長所:JavaScriptにクロスコンパイルする言語を使用している場合、リリース前にプリコンパイルし、パッケージに.coffeeファイルを含めないでください。ただし、Gitリポジトリで追跡し続けます。

ビルドファイルの残り

  • 長所node-gypのようなものを使用している人は、ビルド中に生成されてパッケージに入れないオブジェクトファイルを持っている可能性があります。
  • 短所:これは常に.gitignoreに入るはずです。 .npmignoreファイルを既に使用している場合は、npmの観点から.gitignoreをオーバーライドするため、これらをここに配置する必要があります。

テスト

  • 長所:本番コードの手荷物が減ります。
  • 短所:稼働中のノードの古いバージョンなど、システム固有の障害が発生する可能性がわずかにある稼働環境でテストを実行することはできませんテストが失敗します。

継続的インテグレーション設定/メタファイル

  • 長所:繰り返しますが、手荷物は少なくなります。 .travis.ymlなどのコードは、コードの使用、テスト、表示には必要ありません。

非readmeドキュメントとコード例

  • 長所:手荷物が少ない。一部の人々は、Readmeで少なくとも最低限の実行可能な機能を表現できない場合、あなたのモジュールが大きすぎると考える学派に存在しています。
  • 短所:人々は自分のファイルシステム上で包括的なドキュメントやコード例を見ることができません。リポジトリにアクセスする必要があります(インターネット接続も必要です)。

Github-pagesオブジェクト

  • 長所:モジュールを使用する場合、リリースにCNAMEファイルまたはプレースホルダーindex.htmlsを散らかす必要はありません。 gh-pagesリポジトリとしての二重の役割も果たします。

bower.jsonと友達

  • 長所:リリース前に依存関係を構築する場合、エンドユーザーがbowerをインストールする必要はありません。 。個人的には、そのようなものをパッケージに入れておきます。 npm installを実行するときは、npmのみに依存し、他の外部ソースには依存しないようにします。

基本的に、npmパッケージから除外したいが、npmリポジトリから除外したくないものがある場合は、これを使用する必要があります。それはアイテムの長いリストではありませんが、npmはパッケージ内の無関係なオブジェクトで人々をスタックさせるよりもむしろ機能を組み込みます。

80
SamT

私は lanteの短くて総合的な答えSamTの大きな答え に同意します:

  • パッケージにテストを含めないでください。
  • パッケージには、実稼働ランタイムファイルのみが含まれている必要があります。
  • これにより、パッケージのダウンロードがより簡単で高速になります。

それらの答えへの私の貢献:

。npmignore は、パッケージファイルを選択するためのblacklistの方法です。しかし、より実用的な方法では、whitelistパッケージに含める必要があるファイル filesフィールドを使用 パッケージに.json:

{
  "files": [
    "lib/",
    "index.js"
  ]
}

私はそれがより簡単で、将来の証拠であり、より良いセマンティクスを持っていると思います;)

55
Yves M.

明確にするために、誰かが_npm install your-librarynpmは、レポジトリに含まれるすべてのソースファイルをダウンロードします。ただし、.npmignore

あなたのライブラリをインストールする人はあなたのライブラリを実行するだけでよいことを知ってください、他のものは必要ありません。

たとえば、誰かがライブラリをインストールするとき、おそらくあなたは.travis.ymlまたは.jshintrcファイル、またはいくつかの画像、Gruntファイル、ドキュメントなど。

.npmignore npmパッケージのファイル数を減らし、ダウンロードを高速化することができます

15
lante

テストを含めないでください。多くの場合、テストは実際のコードベースの5倍のサイズになります。テストがGithubなどで行われている限り、それで十分です。

しかし、絶対にすべきことは、NPMパッケージを公開された形式でテストすることです。実際のコードベースに存在するが、テストスイートの一部ではないいくつかのスモークテストを作成します。

パッケージをtarballした後にテストする方法については、こちらをご覧ください: https://github.com/ORESoftware/r2g

実際にNPMに公開せずに「npm publish」の結果をテストする方法?

1
Alexander Mills