Qual é a propriedade do “arquivo principal” ao fazer o init do bower?

106

Qual é a utilidade do arquivo principal de propriedade quando você executa o bower init? Tenho procurado e muitas pessoas dizem que atualmente não tem propósito.

Isso é verdade? A documentação do Bower também não explica isso.

raulricardo21
fonte
3
Parece haver outros também confusos com isso. Por exemplo, o escritor deste tutorial do bower: net.tutsplus.com/tutorials/tools-and-tips/…
Simon Bengtsson
Parece que a definição da mainpropriedade está atualmente em questão e sendo debatida em uma questão aberta no repo do github do bower. Veja aqui as definições propostas atuais e a discussão: github.com/bower/bower/issues/935
BenjaminGolder

Respostas:

60

De acordo com a documentação do Bower.io

a Principal

Tipo recomendado: String ou Array of String

Os principais arquivos de ação necessários para usar seu pacote. Embora o Bower não use esses arquivos diretamente, eles são listados com os comandos bower list --json ebower list --paths, portanto, podem ser usados ​​por ferramentas de construção.

Arquivos de pré-processador, como CoffeeScript, devem ser compilados. Não inclua arquivos minificados. Os nomes de arquivos não devem ter controle de versão (Ruim: package.1.1.0.js; Bom: package.js).

Acho que é mais para o gerenciamento de pacotes e ferramentas de construção como Grunt e Brunch. Por exemplo, o Bootstrap's se bower.jsonparece com:

{
  "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"
  }
}

Quando eu crio no Brunch, ele puxa esses arquivos da minha bower_componentspasta na minha publicpasta.

Kelly J Andrews
fonte
Qual "documentação"?
0xcaff de
5
Isso realmente não responde à pergunta. A documentação não esclarece a função de "Os endpoints primários de seu pacote." Você declarou a relevância de main para o Brunch, mas não como ele se relaciona com o Bower.
BenjaminGolder
Acho que o que estava tentando mostrar é que os arquivos principais são utilizados em várias ferramentas de construção em relação a "esses são os arquivos que meu pacote Bower pretende distribuir." Ainda é um pouco ambíguo em relação à sua verdadeira intenção.
Kelly J Andrews
A âncora do link de documentação está morta. Veja a resposta de @Vivian Spencer para uma atualização.
Timothy Gu
9

De acordo com a especificação JSON do Bower ( https://github.com/bower/spec/blob/master/json.md#main ), a propriedade "principal" é usada para listar os arquivos usados ​​principalmente no projeto. Os arquivos listados não são realmente usados ​​pelo Bower de forma alguma, eles aparentemente estão lá com o propósito de serem usados ​​por outras ferramentas de construção.

Aqui está a especificação oficial:

a Principal


Tipo recomendado : Stringou ArraydeString

Os principais arquivos de ação necessários para usar seu pacote. Embora o Bower não use diretamente esses arquivos, eles são listados com os comandos bower list --jsone bower list --paths, portanto, podem ser usados ​​por ferramentas de construção.

  • Arquivos de pré-processador, como CoffeeScript, devem ser compilados.
  • Não inclua arquivos minimizados.
  • Os nomes de arquivo não devem ter controle de versão (Ruim: package.1.1.0.js; Bom: package.js).
Vivian spencer
fonte
1
Algumas bibliotecas simplesmente não funcionarão sem os arquivos principais listados, o wiredep para ser o exemplo perfeito.
kboom de
@kboom, posso ter o problema relacionado ao que você está dizendo: por exemplo, o arquivo css do pdf.js-viewer não será copiado usando os arquivos main-bower, devo colocá-lo em main dentro do bower.json? Em caso afirmativo, devo realmente fornecer o caminho completo para cada arquivo? obrigado!
trainoasis de