Npm 如何使用';文件';和';目录';package.json中的属性?
如果Npm 如何使用';文件';和';目录';package.json中的属性?,npm,package.json,Npm,Package.json,如果package.json具有文件属性和/或目录属性: "files": [ "./src/assets/fonts/" ], "directories": { "assets:": "./src/assets" } 有哪些方法可以利用它们?文档中没有提到一旦指定了它们,可以用它们做什么 例如,政府说: “文件”字段是要包含在项目中的文件数组。如果在数组中命名一个文件夹,那么它还将包含该文件夹中的文件 “包含在项目中”是什么意思?包括在哪里?既然他们以前不在
package.json
具有文件
属性和/或目录
属性:
"files": [
"./src/assets/fonts/"
],
"directories": {
"assets:": "./src/assets"
}
有哪些方法可以利用它们?文档中没有提到一旦指定了它们,可以用它们做什么
例如,政府说:
“文件”字段是要包含在项目中的文件数组。如果在数组中命名一个文件夹,那么它还将包含该文件夹中的文件
“包含在项目中”是什么意思?包括在哪里?既然他们以前不在,现在怎么能接受呢
在报告中,文件说:
将来,这些信息可能会以其他创造性的方式使用
使用它的现有创造性方式是什么?“包含在项目中”意味着文件将在运行npm publish
时创建的打包tarball中。您还可以运行npm-pack
生成tarball以供检查,而无需实际触发发布。通过这种方式,您可以实际打开生成的tarball并检查哪些文件被/未被包含
当.npmignore
(或.gitignore
作为代理时,如果没有.npmignore
)充当要忽略的文件的黑名单(因此默认情况下包括所有其他文件),文件
数组是白名单。也就是说,如果指定了files
array,则默认情况下不包括所有内容,而只包括显式列出的那些文件
例如,假设您的包是一个用于在浏览器中使用的库。您的代码位于lib/
中,您可以在dist/index.js
处运行browserify编译成与浏览器兼容的lib。您首先在.gitignore
中列出一组文件,这些文件用作不存在的事实.npmignore
。但是现在dist/
充满了生成的文件,您希望从git repo中忽略它们。如果将它们添加到.gitignore
,它们将被排除在git回购之外,但它们也将被从包tarball中忽略。因此,您有两个选择:将.gitignore
复制为.npmignore
,但只在.gitignore
中列出dist/
。如果您这样做,您将不得不保持两个文件几乎但不完全同步。这种方法是tedius的,并且容易出错
另一种选择是不使用.npmignore
,而是在文件
数组中列出您实际需要的文件<代码>自述文件。*,包.json
,变更日志。*
(可能还有一些其他的)都会自动包含在tarball中。因此,您只需添加“文件”:[“dist”]
,就完成了。现在,您的包tarball将不包括来自lib
的原始源JS,也不包括tests/
等,而是只包含dist/
中实际编译的lib
至于目录
,我通常会列出lib
(对于es5)、src
(对于es6、coffeescript、typescript等源)、dist
(对于浏览器或vm特定构建)、测试
,输出
(对于覆盖率报告等临时生成的文件),doc
,尽管npm或其他工具不直接使用此属性,但它使目录结构显式。此外,它还可以在npm脚本中引用目录,如下所示:
“脚本”:{
“清理”:“rm-rf$npm\U包目录\U区$npm\U包目录\U输出”,
“lint”:“eslint$npm\u包\u目录\u src”,
“测试”:“teenytest$npm\u包\u目录\u测试”,
}
这样,目录只指定一次,如果目录发生更改,则只需在单个位置(而不是整个package.json中的多个位置)进行更改。for me文件显示在tarball内容中,但在node mosules文件夹中不可用。你知道会有什么问题吗?你现在也可以做
npm publish--dry run
来找出到底包含了哪些文件,而无需执行实际的发布步骤。不幸的是,在JavaScript世界中,像“文件模式遵循与.gitignore类似的语法,但相反”这样的东西就是你将要得到的所有文档。我想知道这有多相似?您通常希望找到一个语法,或者至少参考一些关于如何解释该值的其他规范。