Quelle est la propriété «fichier principal» lorsque vous faites bower init?


106

À quoi sert le fichier principal de propriété lorsque vous exécutez bower init? J'ai cherché et beaucoup de gens disent que cela n'a actuellement aucun but.

Est-ce vrai? La documentation de Bower ne l'explique pas non plus.


3
Il semble y en avoir d'autres également confus par cela. Par exemple, l'auteur de ce tutoriel sur le bower: net.tutsplus.com/tutorials/tools-and-tips
Simon Bengtsson

Il semble que la définition de la mainpropriété soit actuellement en question et débattue dans un numéro ouvert sur le repo bower github. Regardez ici les définitions actuelles proposées et la discussion: github.com/bower/bower/issues/935
BenjaminGolder

Réponses:


60

Selon la documentation de Bower.io

principale

Type recommandé: chaîne ou tableau de chaînes

Les principaux fichiers d'acteur nécessaires pour utiliser votre package. Bien que Bower n'utilise pas directement ces fichiers, ils sont répertoriés avec les commandes bower list --json etbower list --paths, afin qu'ils puissent être utilisés par les outils de construction.

Les fichiers de préprocesseur comme CoffeeScript doivent être compilés.N'incluez pas de fichiers minifiés.Les noms de fichiers ne doivent pas être versionnés (Mauvais: package.1.1.0.js; Bon: package.js).

Je pense que c'est plus pour la gestion des paquets et pour créer des outils comme Grunt et Brunch. Par exemple, Bootstrap bower.jsonressemble à:

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

Lorsque je crée Brunch, il extrait ces fichiers de mon bower_componentsdossier dans mon publicdossier.


Quelle "documentation"?
0xcaff

5
Cela ne répond pas vraiment à la question. La documentation ne clarifie pas le rôle des «principaux points de terminaison de votre package». Vous avez indiqué la pertinence de main pour Brunch, mais pas comment cela se rapporte à Bower.
BenjaminGolder

Je pense que le point que j'essayais de faire valoir, c'est que les fichiers principaux sont utilisés dans plusieurs outils de construction en ce qui concerne «ce sont les fichiers que mon paquet bower a l'intention de distribuer». C'est toujours un peu ambigu par rapport à sa véritable intention.
Kelly J Andrews

L'ancre du lien de documentation est morte. Voir la réponse de @Vivian Spencer pour une mise à jour.
Timothy Gu

9

Selon la spécification JSON de Bower ( https://github.com/bower/spec/blob/master/json.md#main ), la propriété "main" est utilisée pour lister les fichiers principalement utilisés dans le projet. Les fichiers répertoriés ne sont en aucun cas utilisés par Bower, ils sont apparemment là dans le but d'être utilisés par d'autres outils de construction.

Voici la spécification officielle:

principale


Type recommandé : Stringou ArraydeString

Les principaux fichiers d'acteur nécessaires pour utiliser votre package. Bien que Bower n'utilise pas directement ces fichiers, ils sont répertoriés avec les commandes bower list --jsonet bower list --paths, afin qu'ils puissent être utilisés par les outils de construction.

  • Les fichiers de préprocesseur comme CoffeeScript doivent être compilés.
  • N'incluez pas de fichiers minifiés.
  • Les noms de fichiers ne doivent pas être versionnés (mauvais: package.1.1.0.js; bon: package.js).

1
Certaines bibliothèques ne fonctionneront tout simplement pas sans la liste des fichiers principaux, wiredep en est l'exemple parfait.
kboom

@kboom Je pourrais avoir le problème lié à ce que vous dites: par exemple, le fichier css de pdf.js-viewer ne sera pas copié à l'aide de main-bower-files, dois-je le mettre dans main dans bower.json? Si oui, dois-je fournir le chemin complet de chaque fichier? Merci!
trainoasis
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.