どのように比較するかnpm
、bower
とvolo
?
3つすべてを使用して、UIプロジェクトのJavaScript依存関係をインストールできます。npm
よりノード固有であると理解しています。
それで、いつ何を使うのですか?
npm
まだ遠い立って、しかし、bower
とvolo
私は間に線を引くことができないのですが、まったく同じ問題を解決しているようだnpm
とbower-volo
。
どのように比較するかnpm
、bower
とvolo
?
3つすべてを使用して、UIプロジェクトのJavaScript依存関係をインストールできます。npm
よりノード固有であると理解しています。
それで、いつ何を使うのですか?
npm
まだ遠い立って、しかし、bower
とvolo
私は間に線を引くことができないのですが、まったく同じ問題を解決しているようだnpm
とbower-volo
。
回答:
npmとbowerの違いを最もよく表す説明は次のとおりです。npmはパッケージと呼ばれるJavaScriptモジュールを管理し、Bowerはコンポーネントと呼ばれるフロントエンドコンポーネント(つまり、css、html、JavaScript)を管理します。npmは、bowerのインストールにも使用されます。これは、npmとバウアー(voloはカバーしていません)に関する詳細な記事です。
機能はほとんどありませんが、フロントエンド開発者の間では依然として非常に人気があります。すべてのフロントエンドパッケージがそれを使用しています。bowerをnpmにマージするイニシアチブもあります。
Bowerはクライアント側向けに最適化され、フラットな依存関係ツリーのみをサポートします。つまり、各ライブラリーは1回だけ使用する必要があり(同じライブラリーの異なるバージョンをクライアントに出荷するのはコストがかかるため)、依存関係の制約はユーザーが解決する必要があります。
bowerレジストリ(bower search <some keyword>
)でフロントエンドに関連するものは何でも見つかるはずです-私の意見では、それが他のパッケージマネージャーとの関係でのbowerの最大の利点です。
私はそれを何年も5分以上使用していません。それについて知らないが、私が見ることができることから、それはいくつかのビルドツールを含みます、そしてそれはGruntユーザーにとても馴染みがあります。
はい、npmはNode Package Managerの略です。しかし、今日では、それをすべてに使用できます。人々はもはやnpm install
物事を処理するだけではなく、ノード環境でのみ機能することを期待しています。たとえば、Twitter Bootstrapには多くのnpmパッケージがあります。
Npmはサーバー側での使用に最適化されており、依存関係ツリーがネストされています。各依存関係は、独自の依存関係を持つことができ、独自の依存関係を持つことができます。これにより、各依存関係がアンダースコアなどの独自のバージョンを使用できるため、依存関係バージョンの競合が解消されました。ただし、次のnpmバージョン3では、依存関係ツリーがフラット化されます。
npm @ 3を使用すると、node_modulesディレクトリはよりフラットになります。すべての依存関係とほとんどのサブ依存関係(および(サブ)+依存関係)は、トップレベルで互いに隣り合っています。競合がある場合のみ、モジュールはより深いレベルでインストールされます。これにより、Windowsユーザーにとって非常に簡単になります。
npmを使用する上で私が見るいくつかの利点:
npmはJavaScriptのパッケージマネージャーです。
2013年2月現在、私の意見は以下の通りです。もう考慮しないでください。
Nodeプロジェクトの場合は、それに固執することをお勧めします。ブラウザで使用できるプロジェクトもほとんどありません...
バウアーは今、ポップな男です。彼らは内部に多くのプロジェクトを抱えており、プロジェクトのメンテナはそれらをバウアーレジストリで最新の状態に保ちたいと思っています...
彼が時々少しバギーであるのは残念です。
それ以来5分以上ボロを試していませんが、ボウよりも柔軟性があるように見えます。
voloのマイナス点は、プロジェクトが非常に古いことです。
彼らは同じ問題を解決しているようですが、環境や世界が異なります。nodejsとvoloのNPM、ブラウザーの代わりに。
真実は、NPMを使用して、ブラウザーのJavaScriptとCSSを管理することもできます。あなたがそれをするのを妨げるものは何もありません。その意味では、NPMを使用することは、同じ目的のために2つの異なるツールを管理する必要があるよりも自然に感じられます。
bowerは、少なくともより人気のあるパッケージについては、より多くのパッケージを利用できるようです。しかし、jQueryはすぐにNPMでも直接利用できるようになり、おそらく他のすべてのライブラリも同じ傾向に従うでしょう。
私の意見では、ブラウザでノードモジュールを使用するのに役立つbrowserifyやwebmakeなどのツールがあるため、他に何かを提供しない限り、bowerやvoloの本当のニーズはありません(特定のモジュールがそれらのレジストリ)。
VoloとBowerのどちらも優れていますが、私の観点からは、すでにNPMを使用している場合は、それに固執することをお勧めします。
NPMを使用すると、browserifyやwebmakeを使用しなくてもクライアントの依存関係を管理できることに注意してください。私が取り組んでいるほとんどのプロジェクトでは、npmモジュールがインストールされた後、スクリプトを実行して、クライアントアプリが使用する場所にそれらをデプロイします。そのファイルを他のjsファイルと連結するためにgruntを使用することもあれば、自分のWebアプリのテンプレートファイルから直接参照することもあります。いずれにせよ、これは個人的な好みです。他のユーザーは、ワークフローに自然に収まるBowerやVoloを使いやすくすることができます。
yeoman
私たちがすでに持っていたのに、なぜプロジェクトが新しいパッケージマネージャーを思いついたのnpm
ですか?(成熟していて、有名で機能が豊富でした)この考えは、私はまだ実際のポイントを見逃しているように感じます。
npm
フロントエンドのシンプルさを優先して、面倒を解消したかったのでしょう。したがって、フロントエンド開発用です。
NPMに対するBowerの大きな利点は、コンポーネントの単一のバージョンを使用して依存関係を管理することです(NPMは異なるモジュールのサブ依存関係として異なるコピー/バージョンを持つことで機能します)。これは、A VERY GOOD THINGそれが異なるバージョンでコンポーネントの複数のコピーを含める必要が肥大化してなってきて、あなたのクライアント側のJavaScriptを防ぐため。モジュールの複数のコピーを含めることは、NPMの依存関係管理のしくみの中心であり、したがって、NPMはクライアント側のパッケージ管理には完全に適していません。
上記の結果、bowerパッケージのメンテナーとコンシューマーは、競合を回避するために依存バージョン番号を維持することにもっと注意を払う必要がありますが、それは支払う価値があります。また、NPMモジュールはメジャー、マイナー、パッチリリースの発行でずさんなことが多いので、NPMの依存関係管理もバラのベッドではありません。
これは問題の範囲外であることはわかっていますが、別の方法もあります。Jam JS- http://jamjs.org/興味深い点の1つは、Jamにうなり声機能があることです。
jam compile output.js
誰かがさらに別のパッケージマネージャーを作成し、それに名前を付ける必要があります:yapm :)