当执行 bower init 时,“main file”属性是什么?

107

当您运行bower init时,主文件(main file)属性有什么用途?我一直在寻找答案,但许多人说它目前没有实际用途。

这是真的吗?Bower的文档也没有解释。


3
似乎还有其他人也对此感到困惑。例如,这篇Bower教程的作者:http://net.tutsplus.com/tutorials/tools-and-tips/meet-bower-a-package-manager-for-the-web/。 - Simon Bengtsson
目前似乎存在关于main属性定义的问题,并在Bower Github存储库上的一个公开问题中进行了讨论和辩论。请查看此处以获取当前提议的定义和讨论:https://github.com/bower/bower/issues/935 - BenjaminGolder
2个回答

60
根据Bower.io文档

主文件

推荐类型:字符串或字符串数组

使用你的软件包必需的主要操作文件。虽然Bower不直接使用这些文件,但它们会被列在命令bower list --json和bower list --paths中,以便可以被构建工具使用。

像CoffeeScript之类的预处理器文件应该被编译。不要包括已被最小化的文件。文件名不应该有版本号(不好的做法:package.1.1.0.js;好的做法:package.js)。

我认为这更适用于包管理和构建工具,如Grunt和Brunch。例如,Bootstrap的bower.json看起来像:

{
  "name": "bootstrap",
  "version": "3.0.3",
  "main": [
    "./dist/css/bootstrap.css",
    "./dist/js/bootstrap.js",
    "./dist/fonts/glyphicons-halflings-regular.eot",
    "./dist/fonts/glyphicons-halflings-regular.svg",
    "./dist/fonts/glyphicons-halflings-regular.ttf",
    "./dist/fonts/glyphicons-halflings-regular.woff"
  ],
  "ignore": [
    "**/.*",
    "_config.yml",
    "CNAME",
    "composer.json",
    "CONTRIBUTING.md",
    "docs",
    "js/tests"
  ],
  "dependencies": {
    "jquery": ">= 1.9.0"
  }
}

当我使用Brunch创建时,它会从我的public文件夹中的bower_components文件夹中提取这些文件。


什么是“文档”? - 0xcaff
5
这并没有真正回答问题。文档没有阐明“您的软件包的主要端点”的作用。您已经说明了“main”与Brunch的相关性,但没有说明它如何与Bower相关。 - BenjaminGolder
我认为我想表达的观点是,主文件在几个构建工具中被用于“这些是我的 bower 包打算分发的文件”。它仍然有一点模糊不清,不太确定其真正意图。 - Kelly J Andrews
文档链接的锚点已失效。请查看@Vivian Spencer的答案以获取更新。 - Timothy Gu

9
根据Bower的JSON规范(https://github.com/bower/spec/blob/master/json.md#main),"main"属性用于列出项目中主要使用的文件。列出的文件实际上并不被Bower以任何方式使用,它们显然是为其他构建工具使用而存在的。
以下是官方规范:
主要文件 推荐 类型:字符串或字符串数组 使用您的软件包所需的主要操作文件。虽然Bower没有直接使用这些文件,但它们会在命令“bower list --json”和“bower list --paths”中列出,因此可以被构建工具使用。 预处理器文件(如CoffeeScript)应该编译。 不要包括已压缩文件。 文件名不应该有版本号(不好的:package.1.1.0.js;好的:package.js)。

1
有些库如果没有列出主文件可能会无法正常工作,wiredep 就是一个很好的例子。 - kboom
@kboom,我可能遇到了和你说的问题有关的情况:例如,pdf.js-viewer的css文件无法使用main-bower-files复制,我应该将它放在bower.json的main中吗?如果是的话,我需要为每个文件提供完整的路径吗?谢谢! - trainoasis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接