Указание местоположения .bowerrc при вызове bower install
У меня есть родительский проект, содержащий дочерний модуль. Модуль имеет свой собственный bower.json
, который определяет зависимости модуля и .bowerrc
, который указывает, в какую папку они должны быть загружены. Эти зависимости связаны в модуле HTML.
Родительский проект использует package.json
для управления зависимостями Node.
Чтобы запретить пользователям запускать как npm install
(для родительских зависимостей), так и cd module
, bower install
, cd ../
(для зависимостей модулей), я добавил postinstall
script to package.json
:
"scripts": {
"postinstall" : "./node_modules/.bin/bower install ./module/ --config.directory=\"./module/public/bower_components\""
}
Обратите внимание, что единственным способом, с помощью которого я мог бы установить Bower для установки зависимостей модуля в /module/public/bower_components
, было явно указать directory
в postinstall
script.
Однако ./module/.bowerrc
уже содержит эту информацию, поэтому в идеале я хотел бы "сделать" bower install
осведомленным об этом. Это также облегчит обслуживание package.json
, а module
- более портативное.
Я также попытался передать зависимость Bower и postinstall
script в мой модуль package.json
, используя крюк postinstall
в родительском package.json
для запуска npm install
в каталоге модуля. Но этот подход заканчивается модулем. зависимостей, загружаемых в родительскую папку node_modules
.
Есть ли лучший способ решить эту проблему?
Ответы
Ответ 1
Конфигурация Bower использует следующий порядок приоритета для разрешения конфигураций для сборки.
Из документов bower в http://bower.io/docs/config/
- аргументы CLI через --config
- Переменные среды
- Локальный .bowerrc, расположенный в текущем рабочем каталоге
- Все файлы .bowerrc вверх по дереву каталогов
- .bowerrc файл, расположенный в домашней папке пользователей (~)
- .bowerrc файл, расположенный в глобальной папке (/)
В вашем случае вы можете поместить файл .bowerrc в ту же папку, что и package.json, но настройте все свойства с помощью префиксного модуля /public, чтобы настроить вашу настройку.
Мне нравится ваша идея управлять всеми зависимостями из одного места в package.json.