如果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 次 |
| 最近记录: |