bower
はgem
やcomposer
と違って*.lock
ファイルがありません。
bower
を利用した際に実ファイルがbower_components
ディレクトリに保存されますが、
git
で管理すべきか?という記事です。
bower_componentsは管理しなくても良い
結論を言うと 管理しなくてよい です。
しかし実際bower
を使っていると、たまに依存が解決できない時があります。
Unable to find a suitable version for jquery, please choose one:
1) jquery#>=1.8.0 <2.1.0 which resolved to 2.0.3 and has bootstrap#2.3.2 as dependants
2) jquery#>=1.7 which resolved to 2.1.0 and has bootstrap-select#1.3.7 as dependants
3) jquery#>=1.9.0 which resolved to 2.1.0 and has bootstrap-switch#2.0.1 as dependants
その際にはbower
がどれを採用するかを聞いてきて、人間が指定して依存を解決します。
しかしこれだけでは、bower_components
ディレクトリをバージョン管理していない場合に同じことが起こります。
この現象に出くわすとbower_components
をバージョン管理したくなりますが、必要ありませんでした。
resolutions
bower.json
のresolutions
にパッケージのバージョンをあらかじめ書いておく事で、コンフリクトを起こさずに済みます。
# bower.json
{
"resolutions": {
"jquery": "1.8.3"
}
}
バージョンを指定するだけなので、composer.lock
のようなgitのコミットハッシュより安心感は無いですが、依存を毎回手動で解決する必要はなくなります。
どうしてもこのコミットじゃなければだめだ!という場合以外は、resoltions
を指定する事で解決できます。