2013-12-19 4 views
6

私は、Express.js、Backbone.js、Bootstrapなどを使って小さなWebアプリケーションを開発しています。私はBowerにこのコンポーネントのフロントエンドコンポーネントを管理させることを決めましたが、パッケージをインストールした後、LESSファイル(Bootstrap)のような、必要のないたくさんのものがインストールされていることに気付きました。フレームワーク(バックボーン)またはQUnitのテスト、README.mdファイル、ドキュメントのソースコード、およびように:Bowerが私のアプリを膨らませないようにするにはどうすればいいですか?

Bower Madness

あなたが見ることができるように、それはここで絶対的な狂気です。

私は少しパッケージインデックスを検索しましたが、bootstrap.cssというより軽いバージョンのBootstrapを見つけましたが、インストール後にまだバージョン2.3.2であることがわかりました。

最新のものをインストールする方法はありませんdistこれらのライブラリのバージョンはありますか?

パッケージマネージャーを持っているというアイデアは素晴らしいですが、私のアプリケーションソースをこのようなものすべてで肥大化させるのはちょっとおかしいです。私は、間違いなく私のWebサーバーにBackboneのドキュメントをインストールする必要はありません。

答えて

4

これは、無関係なファイルやフォルダを無視するようにbower.jsonを設定しないパッケージ作成者の問題です。さらに、すべてのパッケージ作成者が自分のパッケージのメインファイルを一覧表示するようにbower.jsonを構成するわけではありません。

これらの2つの情報がないと、どのファイルが不要で、どのファイルが「メイン」ファイルであるかが分かります.Bowerやその他のツールは、必要なものを確実に推測できませんジャンクとは何ですか?

あなたのサーバーを膨らませる限り、理想的には、Bowerコンポーネントをコミットするべきではありません。ソースファイルをディスク上のどこに置いても、それを1つのミニファイルに変換するビルドプロセスが必要です。

+0

Bowerのドキュメントには、最後の文と矛盾するAddy Osmaniの[投稿](http://addyosmani.com/blog/checking-in-front-end-dependencies/)が掲載されています。それが他の人に消費されることになっているパッケージセットでない場合は、コンポーネントをVCSにコミットする必要があります。 – bartzy

+0

ソフトウェアのあらゆる決定と同じように、問題を解決する方法は複数あり、自分のアプリにとって正しいものは、自分のアプリにとって正しくないかもしれません。あなたのアプリが一般的なパッケージ、jQuery、角度、バックボーンなどを使用している場合、私は彼らがすぐにいつでも不正なセーバーを恐れることはありません。そして、あなたのアプリは頻繁に訪れているわけではないので、ビジターがプロダクションで見たバージョンの矛盾を見逃すことはできません。また、製造現場でベンダーのファイルを提供していることを忘れないでください。上記の私の答えで私のアドバイスは、あなたのビルドプロセスはソースを取って、それらを小さく醜くする必要があると言います。 – Stephen

+0

これは、あなたがあなたのminifierを信頼している限り、ビルドを実行する前にすべての作業を見ていたので、あなたのprodサーバーに行くファイルです。全体として、私の個人的な立場は:あなたのアプリがミッションクリティカルな場合、あなたのデープをチェックインしてください。そうでない場合は、心配しないでください。 P.S.私の名前はあなたがリンクした投稿にあります。それが投稿されて以来劇的に編集されていない限り、特定の "これを行う"アドバイスは与えられていません。それは単に好みの集まりです。 – Stephen

1

bowercopyを試すことができます。 どうしますか?

  1. bower.jsonに記載されているすべての亭のコンポーネントをダウンロードし、指定したフォルダ
  2. (オプション)に必要
  3. コピーファイルがbower_componentsフォルダを削除します。

bowercopyタスクを実行するたびに、上記の処理が実行されます。

イサキ設定例

bowercopy: { 
     options: { 
      destPrefix:'app/jslib', // Here is the dest folder 
      clean:true // It's optinal 
     }, 
     dist: { 
      // List all the files you need here 
      src:'backbone/backbone.js' // "src" can be an array 
     } 
    } 

うん、あなたは、あなたが一つずつ必要なすべてのファイルを指定する必要があります。しかしそれはあなたの目標を達成します。