bower
との根本的な違いは何ですか? 単純にわかりやすくシンプルなものが欲しいのです。同僚の中には、プロジェクトでと を同じ意味でnpm
使用している人もいます。bower
npm
ベストアンサー1
すべてのパッケージ マネージャーには多くの欠点があります。 許容できるものを選択するだけです。
歴史
ネプ最初はnode.jsモジュールの管理から始まりました(そのためパッケージはnode_modules
デフォルトで入ります)が、フロントエンドでも機能します。ブラウザ化またはウェブパック。
バウアーフロントエンド専用に作成されており、それを念頭に置いて最適化されています。
リポジトリのサイズ
npm は bower よりもはるかに大きく、汎用 JavaScript (country-data
国情報やsorts
フロントエンドまたはバックエンドで使用できる並べ替え機能など) が含まれています。
Bower のパッケージの量ははるかに少ないです。
スタイル等の取り扱い
Bowerにはスタイルなどが含まれます。
npm は JavaScript に重点を置いています。スタイルは別途ダウンロードされるか、npm-sass
または や のようなものによって要求されますsass-npm
。
依存関係の処理
最大の違いは、npm はネストされた依存関係を処理する(ただしデフォルトではフラット)のに対し、Bower はフラットな依存関係ツリーを必要とする(依存関係解決の負担がユーザーにかかる)ことです。
ネストされた依存関係ツリーとは、依存関係が独自の依存関係を持つことができ、その依存関係も独自の依存関係を持つことができる、ということを意味します。これにより、2 つのモジュールが同じ依存関係の異なるバージョンを必要としても、引き続き動作することができます。npm v3 以降、依存関係ツリーはデフォルトでフラット (スペースを節約) になり、必要な場合にのみネストされることに注意してください (例: 2 つの依存関係が独自の Underscore バージョンを必要とする場合)。
一部のプロジェクトでは両方を使用しています。フロントエンド パッケージには Bower を使用し、Yeoman、Grunt、Gulp、JSHint、CoffeeScript などの開発者ツールには npm を使用しています。
リソース
- ネストされた依存関係- node_modules がなぜこのように動作するのかについての洞察