bowerで入れるパッケージのバージョンが競合して依存解決できないとき

こんにちは。常夜鍋をたべました。きたけーです。

bowerで入れるパッケージのバージョンが競合して依存解決できないときに、please choose oneのようなメッセージが表示されて、どうやって解決するのか尋ねられます。

開発に携わっている各人が適当に解決方法を選択して、各人の環境に差が生じるのは避けたいところです。

事前に「このパッケージはこのバージョンを使うんや!」というのが明確になっている場合には bower.json に以下のような記述をおこないます。

"resolutions": {
  "angular": "1.3.0"
}

ちなみに開発環境と本番環境の乖離を無くすために、本番環境でも開発環境と同じバージョンのパッケージを使いたいところですが、bowerは今のところ、解決した結果の各パッケージのバージョンを記録して(RubyのbundlerでいうGemfile.lockのようなもの)、固定することができません。

npm だと npm shrinkwrap でできるのですが、現在、同様のものが実装されている途中のようです( [WIP] Shrinkwrap feature by sheerun · Pull Request #1592 · bower/bower · GitHub )。