Почему Бауэр удаляет мои "разрешения" и как его остановить?

У меня есть файл bower.json

{
  "name": "example-project",
  "private": true,
  "dependencies": {
    "angular": "1.2.14",
    "angular-scenario": "1.2.14",
    "angular-resource": "1.2.14",
    "angular-ui-router": "0.2.10",
    "angular-strap": "2.0.0"
  }
}

Когда я запускаю grunt (с помощью grunt-bowercopy или grunt-bower-task), я получаю сообщение об ошибке Fatal error: Unable to find suitable version for angular

Когда я запускаю bower install, он говорит, что не знает, какую версию angular использовать:

Unable to find a suitable version for angular, please choose one:
1) angular#1.2.14 which resolved to 1.2.14 and is required by angular-scenario#1.2.14, example-project 
2) angular#>= 1.0.8 which resolved to 1.2.16 and is required by angular-ui-router#0.2.10 
3) angular#~1.2.10 which resolved to 1.2.16 and is required by angular-strap#2.0.0 

Prefix the choice with ! to persist it to bower.json

Итак, это объясняет, почему хрюканье терпит неудачу - он имел транзитивные зависимости и не знал, какой из них выбрать. Поэтому я выбираю 1 (!1 для сохранения). Теперь мой bower.json выглядит так:

{
  "name": "example-project",
  "private": true,
  "dependencies": {
    "angular": "1.2.14",
    "angular-scenario": "1.2.14",
    "angular-resource": "1.2.14",
    "angular-ui-router": "0.2.10",
    "angular-strap": "2.0.0"
  },
  "resolutions": {
    "angular": "1.2.14"
  }
}

Сладкое! Я снова запускаю bower install. На этот раз это удается, но удаляет часть "разрешений". Теперь это просто работает для меня без разрешений, но мои коллеги получат ту же ошибку и должны пройти один и тот же процесс.

Почему он это делает? Есть ли способ остановить это?

-Обновление -

Кажется, что это ошибка. См. Вопросы о bower https://github.com/bower/bower/issues/1061 и https://github.com/bower/bower/issues/1272. Надеемся, что эта проблема получит некоторое внимание и будет решена.

Ответ 1

Поднимитесь до Bower 1.4.0 или выше, где эта проблема будет решена.

Предыдущий ответ: Обходной путь, предложенный edeustace (см. https://github.com/bower/bower/issues/1061), должен добавить script к вашей сборке (grunt, gulp и т.д.), Которая сбрасывает разрешения так, как они должны быть после запуска беседки. Это уродливое решение, но должно сделать трюк, пока проблема не будет решена.