进行Bower初始化时,“主文件”属性是什么?


106

运行bower init时属性主文件有什么用?我一直在寻找,许多人说它目前没有目的。

真的吗?Bower的文档也没有对此进行解释。


3
似乎还有其他人对此感到困惑。例如,该凉亭教程的作者:net.tutsplus.com/tutorials/tools-and-tips/…–
Simon Bengtsson

似乎该main属性的定义当前存在疑问,并在凉亭github存储库上的一个未解决问题中进行了辩论。在此处查找当前提出的定义和讨论:github.com/bower/bower/issues/935
BenjaminGolder

Answers:


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中构建时,它会从bower_components文件夹中的public文件夹中提取这些文件。


什么是“文档”?
0xcaff 2014年

5
这并不能真正回答问题。该文档没有阐明“程序包的主要端点”的作用。您已经说过main与Brunch的相关性,但并未说明它与Bower的相关性。
BenjaminGolder

我认为我要说明的是,主要的文件已在多个构建工具中使用,涉及到“这些是我的Bower软件包打算分发的文件”。它的真正意图仍然有些歧义。
凯利·安德鲁斯

文档链接的锚点已死。有关最新信息,请参见@Vivian Spencer的答案。
蒂莫西·古

9

根据Bower的JSON规范(https://github.com/bower/spec/blob/master/json.md#main),“ main”属性用于列出项目中主要使用的文件。Bower实际上并没有以任何方式使用列出的文件,显然这些文件是为了供其他构建工具使用。

这是官方规格:

主要

推荐
类型:StringArrayString

使用软件包所需的主要代理文件。虽然Bower不直接使用这些文件,但是它们与命令bower list --json和一起列出bower list --paths,因此,构建工具可以使用它们。

  • 应该编译诸如CoffeeScript之类的预处理程序文件。
  • 不包括缩小的文件。
  • 文件名不应该版本化(坏:package.1.1.0.js;好:package.js)。

1
如果没有列出主文件,有些库将无法工作,wiredep是一个很好的例子。
kboom,2015年

@kboom我可能有问题与您所说的有关:例如pdf.js-viewer的css文件不会使用main-bower-files复制,我应该将它放在bower.json的main中吗?如果是,我是否真的需要为每个文件提供完整路径?谢谢!
Trainoasis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.