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

ᆼᆺᆼ*_*ᆼᆺᆼ 21 npm package.json

看起来该包将包含所有文件(未被忽略),即使package.json它没有"files"数组也是如此.

该财产是必要的吗?

F L*_*has 21

你可以认为的files财产package.json白名单应该包括在NPM释放和所有文件.npmignore黑名单应该所有文件包括在内。

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

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

我认为这两种选择在不同的情况下都是有用的。


emi*_*svz 16

不是真的,你可以使用.npmignore所有内容,因为除非另有说明,否则添加所有文件.

你可以在这里看到更多

  • .npmignore **黑名单**文件,而“文件” **白名单**。后者是避免发布不需要的文件的更好的策略。 (4认同)
  • 不要使用`.npmignore`。https://medium.com/@jdxcode/for-the-love-of-god-dont-use-npmignore-f93c08909d8d (4认同)

zum*_*fra 7

本文为使用files属性(如F Lekschas所说的白名单)而不是使用.npmignore提供了一个很好的论据。原因包括:

  • 使用.npmignore会导致.gitignore被忽略,这对于许多开发人员而言可能是意外的。
  • 通常,开发人员出于开发目的将凭据保存在软件包中,并且他们当然不希望将其包含在生产软件包中。使用白名单技术可大大减少意外包装此类物品的可能性。

请注意,即使您没有将某些文件列入白名单,也会将其包括在内。这些包括:

package.json
README
CHANGES / CHANGELOG / HISTORY
LICENSE / LICENCE
NOTICE
The file in the “main” field
Run Code Online (Sandbox Code Playgroud)

编辑以解决评论。


Yas*_*mez 6

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