Npm 是",;档案;在package.json中是否需要属性?

Npm 是",;档案;在package.json中是否需要属性?,npm,package.json,Npm,Package.json,即使package.json没有“files”数组,包似乎也会包含所有文件(不会被忽略) 该属性是必需的吗?不一定,您可以使用.npmignore执行所有操作,因为除非另有说明,否则所有文件都将添加 当没有.npmignore文件时,将使用.gitignore的内容。因此,在将生成的目录(如dist/添加到.gitignore时要小心,因为它们可能最终不在您的生产tarball中。当这种情况发生时,您可以使用package.json中的“files”数组来包含它们,从该文件中包含的as将永远不会

即使
package.json
没有
“files”
数组,包似乎也会包含所有文件(不会被忽略)


该属性是必需的吗?

不一定,您可以使用
.npmignore
执行所有操作,因为除非另有说明,否则所有文件都将添加


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

您可以将in
package.json
视为将所有应包含在npm版本中的文件列入白名单,而将
.npmignore
视为将所有应包含在中的文件列入黑名单

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

  • 文件
    当我的项目有很多辅助文件(如构建脚本、配置文件等)时,这些文件不需要包含在npm版本中
  • .npmignore
    当只有少量此类辅助文件时
在我看来,这两个选项在不同的场景中都很有用。

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

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

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

编辑以发表评论。

谢谢。该手册并没有真正说明默认情况下包含所有文件,这就是为什么我想知道..npmignore黑名单文件,而“文件”白名单。后者是避免发布不需要的文件的更好策略。不要使用
.npmignore
。仔细的npm通常会忽略您的.gitignore文件。如果你添加了一个.npmignore文件,但没有弹出.gitignore文件,那么你最终会将你的密钥等发布到你的公共npm包中。注意并解决了这个问题。谢谢。
npmignore
不会导致
.gitignore
在日常工作中被忽略。有些关联,我想排除一些dir,但包括他们的父母。最后我做了
“文件”:[“dist/*”、“src/*”、“!/***/\uuuu测试”]、