Help us understand the problem. What is going on with this article?

[Bower] bower_components ディレクトリはgitで管理すべきか問題

More than 5 years have passed since last update.

bowergemcomposerと違って*.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.jsonresolutionsにパッケージのバージョンをあらかじめ書いておく事で、コンフリクトを起こさずに済みます。

bower.json
{
    "resolutions": {
        "jquery": "1.8.3"
    }
}

バージョンを指定するだけなので、composer.lockのようなgitのコミットハッシュより安心感は無いですが、依存を毎回手動で解決する必要はなくなります。

どうしてもこのコミットじゃなければだめだ!という場合以外は、resoltionsを指定する事で解決できます。

bowerが依存解決を聞いてきた時に、!を前に付けて返事をすると自動的にbower.jsonが更新されます。
例: !2

bowerの返事をよく読んでなかった&調べてもあんま出ないのでモヤッとしてました。笑

lga0503
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away