¿Cómo hacer que bower construya el paquete?


¿Hay alguna manera de hacer que bower ejecute un gruñido de paquete después de que se clonó desde GitHub?

Estoy tratando de usar Bower pero uno de los paquetes que estoy usando es la extensión Bootstrap, x-editable. El problema es que mientras que otros paquetes envían una versión completamente compilada a github, cuando se instala por Bower, tiene una versión compilada x-editable y espera que ejecute un archivo grunt para compilar el paquete.

Esa es una práctica común en otros administradores de paquetes como npm, pero podría encontrar cómo hacer Bower construir en instalar. Lo que significa que necesito otro mecanismo para completar la instalación del paquete.

Author: Guy Korland, 2013-06-18

3 answers

Construir en install es un anti-patrón y se recomienda encarecidamente contra en Node. Al igual que Node, los paquetes Bower deben ser pre-construidos. Esto se debe a que el usuario final no debería tener que preocuparse por el preprocesador o el sistema de compilación que requiere un paquete.

Sus mejores opciones son convencer al autor para que pre-compile, bifurque y lo haga usted mismo, o compile manualmente después de haber instalado el componente.

El equipo de Bower planea agregar la capacidad de publicar paquetes a un servidor similar a cómo funciona en npm. Esto hará que sea mucho mejor para los paquetes que necesitan un paso de compilación.

 23
Author: Sindre Sorhus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-16 21:43:09

Hay 3 ganchos en bower, postinstall puede resolver su problema si por alguna razón no puede pre-construido como @Sindre Sorhus señala.

In .bowerrc do:

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

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

 4
Author: schurpf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-22 16:04:12

Podría usar composer para manejar la instalación posterior:

Bower.json:

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

Compositor.json:

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

Entonces corro 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

Después de que Bower termine de instalar, el compilador LESS procesa el .menos archivos y pone un buen bootstrap.css en mi carpeta pública. algo similar se podría hacer para los archivos JavaScript con Closure Compiler.

 -2
Author: Renaat De Muynck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-12 09:23:22