Указание местоположения .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.