gpt4 book ai didi

npm - 如何使用 package.json 中的 'files' 和 'directories' 属性?

转载 作者:行者123 更新时间:2023-12-03 05:44:33 27 4
gpt4 key购买 nike

如果 package.json 具有 files 属性和/或 directories 属性:

  "files": [
"./src/assets/fonts/"
],
"directories": {
"assets:": "./src/assets"
}

有哪些方法可以利用它们?文档没有提到指定它们后可以用它们做什么。

例如,files docs说:

The "files" field is an array of files to include in your project. If you name a folder in the array, then it will also include the files inside that folder.

“包含在您的项目中”是什么意思?包括哪里?以前无法访问它们,现在如何访问它们?

directories section ,文档说:

In the future, this information may be used in other creative ways.

现有的创造性使用方式是什么?

最佳答案

“包含在您的项目中”意味着这些文件将位于运行 npmpublish 时创建的打包 tarball 中。您还可以运行 npm pack 生成用于检查的 tarball,而无需实际触发发布。这样您就可以实际打开生成的 tarball 并检查包含/未包含哪些文件。

.npmignore(或.gitignore作为代理,如果没有.npmignore)则充当要忽略的文件黑名单(因此默认情况下包括其他所有内容),files 数组是一个白名单。也就是说,如果指定了 files 数组,则默认情况下不会包含所有内容,而是默认排除所有内容,并且只有那些明确列出的文件才会包含在打包的 tarball 中。

举个例子,假设您的包是一个供浏览器使用的库。您的代码位于 lib/ 中,然后运行 ​​browserify 以编译为位于 dist/index.js 的浏览器兼容库。您首先会在 .gitignore 中列出一堆文件,这些文件被用作事实上的 .npmignore,但实际上并不存在。但现在 dist/ 充满了生成的文件,您希望 git 存储库中忽略它们。如果将它们添加到 .gitignore,它们将从 git 存储库中排除,但它们也会从包 tarball 中被忽略。因此,您有两个选择:将 .gitignore 复制为 .npmignore,但仅在 .gitignore 中列出 dist/。如果这样做,您将必须保持两个文件几乎但不完全同步。这种方式既繁琐又容易出错。

另一种选择是不使用 .npmignore,而只在 files 数组中列出包中实际需要的文件。无论如何,README.*package.jsonCHANGELOG.*(也许还有其他几个)都会自动包含在 tarball 中。因此,您只需添加 "files": [ "dist"] 即可完成。现在,您的包 tarball 将不包含来自 lib 的原始源 JS,也不包含 tests/ 等,而是仅包含 dist/ 中实际编译的 lib >.

至于目录,我通常列出lib(对于es5)、src(对于es6、coffeescript、typescript等源), dist(用于浏览器或特定于虚拟机的构建)、testoutput(用于临时生成的文件,如覆盖率报告等)、 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",
}

通过这种方式,目录只需指定一次,如果它们发生更改,只需在单个位置进行更改(而不是在 package.json 中进行多次更改)。

关于npm - 如何使用 package.json 中的 'files' 和 'directories' 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40795836/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com