"files" 属性 在 package.json 中是必要的吗?
Is the "files" property necessary in package.json?
看起来包将包括所有文件(未被忽略),即使 package.json
没有 "files"
数组。
属性 有必要吗?
不一定,您可以使用 .npmignore
完成所有操作,因为除非另有说明,否则所有文件都会添加。
你可以看到更多here
当没有.npmignore
文件时,将使用.gitignore
的内容。因此,在将生成的目录(如 dist/
添加到 .gitignore
时要小心,因为它们可能最终不在您的生产 tarball 中。当发生这种情况时,您可以使用 package.json
中的 "files" 数组来包含它们,因为永远不会排除该文件中的包含。
您可以将 package.json
中的 files
property 视为应包含在 npm 版本中的所有文件的 允许列表 和 .npmignore
作为 拒绝列表 应该 不 包含的所有文件。
根据经验,对于我自己的项目,我通常使用:
files
当我的项目有很多辅助文件,如构建脚本、配置文件等,不需要包含在 npm 版本中时
.npmignore
当只有几个这样的辅助文件时
在我看来,这两个选项在不同的场景下都有用。
This article makes a good argument 用于使用文件 属性(白名单,如 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
编辑以解决评论。
看起来包将包括所有文件(未被忽略),即使 package.json
没有 "files"
数组。
属性 有必要吗?
不一定,您可以使用 .npmignore
完成所有操作,因为除非另有说明,否则所有文件都会添加。
你可以看到更多here
当没有.npmignore
文件时,将使用.gitignore
的内容。因此,在将生成的目录(如 dist/
添加到 .gitignore
时要小心,因为它们可能最终不在您的生产 tarball 中。当发生这种情况时,您可以使用 package.json
中的 "files" 数组来包含它们,因为永远不会排除该文件中的包含。
您可以将 package.json
中的 files
property 视为应包含在 npm 版本中的所有文件的 允许列表 和 .npmignore
作为 拒绝列表 应该 不 包含的所有文件。
根据经验,对于我自己的项目,我通常使用:
files
当我的项目有很多辅助文件,如构建脚本、配置文件等,不需要包含在 npm 版本中时.npmignore
当只有几个这样的辅助文件时
在我看来,这两个选项在不同的场景下都有用。
This article makes a good argument 用于使用文件 属性(白名单,如 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
编辑以解决评论。