Comment faire bower construire le paquet?

Existe-t-il un moyen de faire en sorte que bower exécute un Grunt de paquet après qu'il ait été cloné à partir de GitHub?

J'essaie d'utiliser Bower mais l'un des paquets que j'utilise est l'extension Bootstrap, x-editable. Le problème est que si d'autres paquets poussent une version entièrement construite vers github, une fois installé par Bower, vous avez une version construite x-editable vous attendez à exécuter un fichier grunt pour construire le paquet.

C'est une pratique courante dans d'autres gestionnaires de paquets comme npm mais je pourrais trouver comment faire Bower construire sur installer. Ce qui signifie que j'ai besoin d'un autre mécanisme pour terminer l'installation du paquet.

24
demandé sur Guy Korland 2013-06-18 17:42:20

3 réponses

Construire sur install est un anti-pattern et est fortement recommandé dans Node. Comme Node, les paquets Bower doivent être pré-construits. C'est parce que l'utilisateur final ne devrait pas avoir à se soucier du préprocesseur ou du système de construction requis par un paquet.

Vos meilleures options sont soit de convaincre l'auteur de pré-construire, de fork et de le faire vous-même, soit de construire manuellement après avoir installé le composant.

L'équipe Bower prévoit d'ajouter la possibilité de publier des paquets sur un serveur similaire à la façon dont il fonctionne dans mnp. Cela rendra beaucoup mieux pour les paquets ayant besoin d'une étape de construction.

23
répondu Sindre Sorhus 2013-07-16 21:43:09

Il y a 3 crochets dans bower, postinstall peut résoudre votre problème si, pour une raison quelconque, vous ne pouvez pas pré-construit comme @ Sindre Sorhus souligne.

Dans .bowerrc faire:

{
    "scripts": {
        "preinstall": "<your command here>",
        "postinstall": "<your command here>",
        "preuninstall": "<your command here>"
    }
}

Source https://github.com/bower/bower/blob/master/HOOKS.md

4
répondu schurpf 2014-09-22 16:04:12

Vous pouvez utiliser composer pour gérer l'installation post:

Bower.json:

{
    "dependencies": {
        "bootstrap": "*"
    }
}

Le Compositeur.json:

{
    "scripts" : {
        "post-install-cmd" : [
            "bower install --no-color",
            "lessc bower_components/bootstrap/less/bootstrap.less public/script/bootstrap.css"
        ]
    }
}

Puis je cours composer install:

Loading composer repositories with package information
Installing dependencies (including require-dev)
Nothing to install or update
Generating autoload files
bower warn Package bootstrap is still using the deprecated "component.json" file
bower cloning git://github.com/twitter/bootstrap.git
bower cached git://github.com/twitter/bootstrap.git
bower fetching bootstrap
bower checking out bootstrap#v2.3.2
bower warn Package jquery is still using the deprecated "component.json" file
bower copying C:\Users\renadm\AppData\Roaming\bower\cache\bootstrap\9d49e0aedf207bebd028e26cc86a9e58
bower cloning git://github.com/components/jquery.git
bower cached git://github.com/components/jquery.git
bower fetching jquery
bower checking out jquery#1.8.3
bower copying C:\Users\renadm\AppData\Roaming\bower\cache\jquery\29cb4373d29144ca260ac7c3997f4381
bower installing bootstrap#2.3.2
bower installing jquery#1.8.3

Une fois Bower terminé l'installation, le compilateur moins traite le .moins de fichiers et met un bon bootstrap.css dans mon dossier public. quelque chose de similaire pourrait être fait pour les fichiers JavaScript avec le compilateur de fermeture.

-2
répondu Renaat De Muynck 2013-07-12 09:23:22