Как сделать беседу построить пакет?
Есть ли способ заставить bower запустить пакет grunt после того, как он был клонирован из GitHub?
Я пытаюсь использовать Bower, но один из пакетов, которые я использую, является расширением Bootstrap, x-editable.
Проблема в том, что, в то время как другие пакеты подталкивают полностью построенную версию к github, поэтому, когда вы устанавливаете Bower, у вас есть встроенная версия x-editable, вы можете запустить файл grunt для сборки пакета.
Это обычная практика в других менеджерах пакетов, таких как npm, но я мог бы найти, как заставить Bower построить ее при установке. Это означает, что мне нужен еще один механизм для завершения установки пакета.
Ответы
Ответ 1
Основание на установке является анти-шаблоном и настоятельно рекомендуется в Node. Как и Node, пакеты Bower должны быть предварительно построены. Это связано с тем, что конечный пользователь не должен заботиться о том, какой препроцессор или система сборки требуется пакет.
Ваши лучшие варианты - либо убедить автора в предварительной сборке, вилке и сделать это самостоятельно, либо создать вручную после того, как вы установили компонент.
Команда Bower планирует добавить возможность публикации пакетов на сервер, подобно тому, как это работает в npm. Это значительно улучшит пакеты, требующие этапа сборки.
Ответ 2
Есть 3 крючка в беседке, postinstall может решить вашу проблему, если по какой-либо причине вы не можете предварительно построить, как указывает @Sindre Sorhus.
В .bowerrc do:
{
"scripts": {
"preinstall": "<your command here>",
"postinstall": "<your command here>",
"preuninstall": "<your command here>"
}
}
источник https://github.com/bower/bower/blob/master/HOOKS.md
Ответ 3
Вы можете использовать композитор для обработки post install:
bower.json:
{
"dependencies": {
"bootstrap": "*"
}
}
composer.json:
{
"scripts" : {
"post-install-cmd" : [
"bower install --no-color",
"lessc bower_components/bootstrap/less/bootstrap.less public/script/bootstrap.css"
]
}
}
Затем я запустил 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
После завершения установки Bower компилятор LESS обрабатывает бездействующие файлы и помещает приятный bootstrap.css
в мою общую папку. что-то подобное можно было бы сделать для файлов JavaScript с Closure Compiler.