web-dev-qa-db-ja.com

package.jsonで「files」プロパティは必要ですか?

パッケージには、package.json ありません "files"配列。

そのプロパティは必要ですか?

18
ᆼᆺᆼ

そうではありませんが、.npmignore特に指定がない限り、すべてのファイルが追加されるため。

もっと見ることができます こちら

14
emilioriosvz

files propertypackage.json aswhitelistingnpmリリースに含まれるすべてのファイルと.npmignore asblacklistingnotを含める必要があるすべてのファイル。

経験則として、私自身のプロジェクトでは、通常以下を使用します。

  • filesプロジェクトにビルドスクリプト、構成ファイルなど、npmリリースに含める必要のない補助ファイルが多数ある場合
  • .npmignoreそのような補助ファイルが少数しかない場合

両方のオプションは、私の考えているさまざまなシナリオで役立ちます。

17
F Lekschas

この記事は適切な引数を作成します .npmignoreを使用する代わりに、filesプロパティ(F Lekschasが述べたホワイトリスト)を使用します。理由は次のとおりです。

  • .npmignoreを使用すると、.gitignoreが無視されますが、これは多くの開発者が予期しないことです。
  • 多くの場合、開発者は開発目的のために資格情報をパッケージに保持しますが、資格情報を実稼働パッケージに含めたくないことは確かです。ホワイトリスト手法を使用すると、このようなものを誤ってパッケージ化する可能性が大幅に減少します。

ファイルをホワイトリストに登録しなくても、一部のファイルが含まれることに注意してください 。これらには以下が含まれます。

package.json
README
CHANGES / CHANGELOG / HISTORY
LICENSE / LICENCE
NOTICE
The file in the “main” field

コメントに対処するために編集されました。

7
zumafra

.npmignoreファイルがない場合、.gitignoreの内容が使用されます。したがって、dist/のような生成されたディレクトリを.gitignoreに追加するときは、本番用のtarballにない可能性があるため、注意してください。その場合、package.jsonの "files"配列を使用してそれらを含めることができます。そのファイルからのインクルードは決して除外されないからです。

6
Yasammez