¿Cuál es la propiedad del "archivo principal" al hacer bower init?


106

¿Cuál es el uso del archivo principal de propiedades cuando ejecuta bower init? Lo he estado buscando y mucha gente dice que actualmente no tiene ningún propósito.

¿Es eso cierto? La documentación de Bower tampoco lo explica.


3
Parece que hay otros también confundidos por esto. Por ejemplo, el autor de este tutorial de bower
Simon Bengtsson

Parece que la definición de la mainpropiedad está actualmente en duda y se está debatiendo en un tema abierto en el repositorio de bower github. Busque aquí las definiciones propuestas actuales y la discusión: github.com/bower/bower/issues/935
BenjaminGolder

Respuestas:


60

Según la documentación de Bower.io

principal

Tipo recomendado: cadena o matriz de cadena

Los archivos de actuación primarios necesarios para usar su paquete. Si bien Bower no usa directamente estos archivos, se enumeran con los comandos bower list --json ybower list --paths, por lo que pueden ser utilizados por herramientas de compilación.

Los archivos de preprocesador como CoffeeScript deben compilarse. No incluya archivos minificados. Los nombres de archivo no deben ser versionados (Malo: package.1.1.0.js; Bueno: package.js).

Creo que es más para la gestión de paquetes y la creación de herramientas como Grunt y Brunch. Por ejemplo, Bootstrap se bower.jsonve así:

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

Cuando construyo en Brunch, extrae estos archivos de mi bower_componentscarpeta en mi publiccarpeta.


¿Qué "documentación"?
0xcaff

5
Esto realmente no responde a la pregunta. La documentación no aclara el papel de "Los puntos finales primarios de su paquete". Ha indicado la relevancia de main para Brunch, pero no cómo se relaciona con Bower.
BenjaminGolder

Creo que el punto que estaba tratando de hacer es que los archivos principales se utilizan en varias herramientas de compilación con respecto a "estos son los archivos que mi paquete bower intenta distribuir". Todavía es un poco ambiguo con respecto a su verdadera intención.
Kelly J Andrews

El ancla del enlace de documentación está muerta. Vea la respuesta de @Vivian Spencer para una actualización.
Timothy Gu

9

De acuerdo con la especificación JSON de Bower ( https://github.com/bower/spec/blob/master/json.md#main ), la propiedad "principal" se utiliza para enumerar los archivos que se utilizan principalmente en el proyecto. Los archivos enumerados en realidad no son utilizados por Bower de ninguna manera, aparentemente están allí con el propósito de ser utilizados por otras herramientas de compilación.

Aquí está la especificación oficial:

principal


Tipo recomendado : Stringo ArraydeString

Los archivos de actuación primarios necesarios para usar su paquete. Si bien Bower no usa directamente estos archivos, se enumeran con los comandos bower list --jsony bower list --paths, por lo que pueden ser utilizados por herramientas de compilación.

  • Deben compilarse archivos de preprocesador como CoffeeScript.
  • No incluya archivos minificados.
  • Los nombres de archivo no deben tener versiones (Malo: package.1.1.0.js; Bueno: package.js).

1
Algunas bibliotecas simplemente no funcionarán sin los archivos principales enumerados, wiredep es el ejemplo perfecto.
kboom

@kboom es posible que tenga el problema relacionado con lo que está diciendo: por ejemplo, el archivo css de pdf.js-viewer no se copiará usando main-bower-files, ¿debería ponerlo en main dentro de bower.json? Si es así, ¿tengo que proporcionar la ruta completa para cada archivo? ¡Gracias!
trainoasis
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.