如果a package.json
有files
道具和/或directories
道具:
"files": [
"./src/assets/fonts/"
],
"directories": {
"assets:": "./src/assets"
}
Run Code Online (Sandbox Code Playgroud)
有哪些方法可以利用它们?文档没有提到一旦指定它们可以用它们做什么.
例如,文件文档说:
"files"字段是要包含在项目中的文件数组.如果您在数组中命名文件夹,那么它还将包含该文件夹中的文件.
"包含在您的项目中"是什么意思?包括在哪里?他们现在不是以前可以获得的?
在目录部分,文档说:
将来,此信息可能会以其他创造性方式使用.
它现有的创作方式有哪些?
jas*_*rns 76
"包含在您的项目中"意味着文件将位于运行时创建的打包的tarball中npm publish
.您还可以运行npm pack
以生成tarball以进行检查,而无需实际触发发布.这样您就可以实际打开生成的tarball并检查哪些文件不包含在内.
虽然.npmignore
(或.gitignore
作为代理,如果没有.npmignore
)用作要忽略的文件的黑名单(因此默认包括其他所有内容),该files
数组是白名单.也就是说,默认情况下不包括所有内容,如果files
指定了数组,则默认情况下会排除所有内容,并且只有明确列出的文件才会包含在打包的tarball中.
例如,假设您的包是一个供浏览器使用的库.你的代码在lib/
,你运行browserify编译成浏览器兼容的lib at dist/index.js
.你可以从列出的一堆文件开始.gitignore
,它们被用作.npmignore
不存在的事实.但是现在dist/
已经充满了生成的文件,你希望它们从git repo中被忽略.如果你添加它们.gitignore
,它们将从git repo中排除,但它们也将从包tarball中被忽略.所以,你有两个选择:复制你.gitignore
的.npmignore
,但只列出dist/
在.gitignore
.如果你这样做,你将不得不保持两个文件几乎 - 但不是完全同步.这种方式很容易出错并容易出错.
另一种方法是没有a .npmignore
,而只是列出files
数组中实际需要的文件.README.*
,package.json
,CHANGELOG.*
(也许一对夫妇等)会自动包含在压缩包而不管.所以你只需添加即可"files": [ "dist" ]
.现在你的包tarball将不包括原始源JS lib
,也不包括tests/
等,而是只包含实际编译的lib dist/
.
至于directories
,我通常列出lib
(对于es5),src
(对于es6,coffeescript,typescript等来源),dist
(对于浏览器或vm特定的构建)test
,output
(对于临时生成的文件,如覆盖率报告等)doc
,等等. npm或其他工具不直接使用此属性,它使目录结构显式化.此外,它使目录在npm脚本中可引用,如下所示:
"scripts": {
"clean": "rm -rf $npm_package_directories_dist $npm_package_directories_output",
"lint": "eslint $npm_package_directories_src",
"test": "teenytest $npm_package_directories_test",
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,目录只被指定一次,如果它们发生变化,它们只需要在一个位置(而不是整个package.json中的许多位置)进行更改.
归档时间: |
|
查看次数: |
10822 次 |
最近记录: |