Что такое свойство «основного файла» при выполнении bower init?

106

Какая польза от основного файла свойств при запуске bower init? Я искал, и многие люди говорят, что в настоящее время у него нет цели.

Это правда? В документации Бауэра это тоже не объясняется.

Raulricardo21
источник
3
Кажется, это сбивает с толку и других. Например, автор этого учебника: беседка net.tutsplus.com/tutorials/tools-and-tips/...
Саймон Bengtsson
Похоже, что определение mainсвойства в настоящее время находится под вопросом и обсуждается в открытом вопросе в репозитории bower github. Здесь можно найти
BenjaminGolder

Ответы:

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
5
Это не совсем ответ на вопрос. В документации не разъясняется роль «основных конечных точек вашего пакета». Вы указали, что главное для позднего завтрака имеет отношение к бранчу, но не указали, какое отношение оно имеет к Бауэру.
BenjaminGolder
Я думаю, что я пытался сказать, что основные файлы используются в нескольких инструментах сборки в отношении «это файлы, которые мой пакет bower намеревается распространять». Это все еще немного двусмысленно относительно его истинного намерения.
Kelly J Andrews
Якорь ссылки на документацию мертв. См. Ответ @Vivian Spencer для обновления.
Тимоти Гу
9

Согласно спецификации JSON Bower ( https://github.com/bower/spec/blob/master/json.md#main ), свойство «main» используется для перечисления файлов, в основном используемых в проекте. Перечисленные файлы на самом деле никаким образом не используются Bower, очевидно, они существуют для использования другими инструментами сборки.

Вот официальная спецификация:

основной

Рекомендуемый
тип: Stringили ArrayизString

Основные действующие файлы, необходимые для использования вашего пакета. Хотя Bower не использует эти файлы напрямую, они перечислены вместе с командами bower list --jsonи bower list --paths, поэтому могут использоваться инструментами сборки.

  • Файлы препроцессора, такие как CoffeeScript, должны быть скомпилированы.
  • Не включайте уменьшенные файлы.
  • Имена файлов не должны иметь версии (плохо: package.1.1.0.js; хорошо: package.js).
Вивиан Спенсер
источник
1
Некоторые библиотеки просто не будут работать без перечисленных основных файлов, Wiredep - отличный пример.
kboom
@kboom, у меня может быть проблема, связанная с тем, что вы говорите: например, css-файл pdf.js-viewer не будет копироваться с использованием main-bower-files, следует ли мне поместить его в main внутри bower.json? Если да, действительно ли мне нужно указывать полный путь для каждого файла? Спасибо!
trainoasis