package.json中是否需要“files”属性?

时间:2016-06-16 10:55:30

标签: npm package.json

即使package.json没有"files"数组,包看起来也会包含所有文件(未被忽略)。

该财产是否必要?

4 个答案:

答案 0 :(得分:9)

实际上,您可以使用.npmignore执行所有操作,因为除非另有说明,否则将添加所有文件。

您可以看到更多here

答案 1 :(得分:5)

您可以将package.json中的files property视为 whitelisting 所有应包含在npm版本中的文件,将.npmignore视为 blacklisting < / em>应当包含的所有文件。

根据经验,对于我自己的项目,我通常使用:

  • files,当我的项目中有很多辅助文件(例如构建脚本,配置文件等)时,不需要包含在npm版本中
  • .npmignore,只有很少的辅助文件

这两种选择在我脑海中的不同情况下都很有用。

答案 2 :(得分:4)

当没有.npmignore文件时,将使用.gitignore的内容。因此,在将dist/之类的生成目录添加到.gitignore时要小心,因为它们可能最终不在您的生产压缩包中。发生这种情况时,您可以使用package.json中的“文件”数组来包含它们,因为该文件中的包含将永远不会被排除。

答案 3 :(得分:4)

This article makes a good argument用于使用files属性(如F Lekschas所说的白名单),而不是使用.npmignore。原因包括:

  • 使用.npmignore会导致.gitignore被忽略,这可能是 许多开发人员意想不到的。
  • 开发人员通常将凭据保存在 包用于开发目的,他们当然不想 将它们包含在生产包中。使用白名单技术 大大降低了意外包装诸如 这个。

Note that some files are included even if you don't whitelist them。这些包括:

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

已编辑以处理评论。