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 )。