bower
との根本的な違いは何npm
ですか? シンプルでシンプルなものが欲しいだけです。私の同僚の何人かがプロジェクトで と を同じ意味でbower
使用しているのを見てきました。npm
8 に答える
2017年10月更新
Bower はついに非推奨になりました。話の終わり。
古い答え
Spotify の JavaScript 開発者である Mattias Petter Johansson から:
ほとんどの場合、Bower よりも Browserify と npm を使用する方が適切です。これは、Bower よりも優れたフロントエンド アプリのパッケージング ソリューションです。Spotify では、npm を使用して Web モジュール全体 (html、css、js) をパッケージ化しており、非常にうまく機能しています。
Bower は、自身を Web 用のパッケージ マネージャーとしてブランド化しています。これが本当なら最高です。フロントエンド開発者としての私の人生をより良くしてくれるパッケージ マネージャーは最高です。問題は、Bower がその目的に特化したツールを提供していないことです。npm が提供していないことを私が知っているツールは提供しておらず、特にフロントエンド開発者にとって特に役立つツールは提供していません。フロントエンド開発者にとって、npm を介して Bower を使用するメリットはまったくありません。
bower の使用をやめて、npm を中心に統合する必要があります。ありがたいことに、それが起こっていることです:
browserify または webpack を使用すると、すべてのモジュールを大きな縮小ファイルに連結するのが非常に簡単になります。これは、特にモバイル デバイスのパフォーマンスに優れています。同じ効果を得るには、はるかに多くの労力が必要になる Bower の場合はそうではありません。
npm は、モジュールの複数のバージョンを同時に使用する機能も提供します。アプリケーション開発をあまり行っていない場合、これは最初は悪いことだと思うかもしれませんが、依存関係の地獄を数回経験すると、1 つのモジュールの複数のバージョンを持つ機能を持つことは非常に難しいことに気付くでしょう。素晴らしい機能。npm には非常に便利な重複排除ツールが含まれていることに注意してください。これは、実際に必要な場合にモジュールの 2 つのバージョンのみを使用することを自動的に確認します。しかし、彼らができない場合は、非常に便利です。
( 2016 年 8 月現在、 Webpackとロールアップは Browserify よりも優れていると広く見なされていることに注意してください。)
私のチームは、Bower から離れて npm に移行しました。理由は次のとおりです。
- プログラムによる使用は苦痛だった
- Bowerのインターフェースは変化し続けました
- URL 短縮形などの一部の機能は完全に壊れています
- 同じプロジェクトで Bower と npm の両方を使用するのは面倒です
- bower.json のバージョン フィールドを git タグと同期させるのが面倒
- ソース管理 != パッケージ管理
- CommonJS のサポートは単純ではありません
詳細については、「私のチームが bower の代わりに npm を使用する理由」を参照してください。
http://ng-learn.org/2013/11/Bower-vs-npm/からこの便利な説明を見つけました
一方では、npm は、node.js 環境で使用されるモジュール、または Karma、lint、minifiers などの node.js を使用して構築された開発ツールをインストールするために作成されました。npm は、モジュールをプロジェクト内 (デフォルトでは node_modules 内) にローカルにインストールすることも、複数のプロジェクトで使用するためにグローバルにインストールすることもできます。大規模なプロジェクトで依存関係を指定する方法は、依存関係のリストを含む package.json というファイルを作成することです。npm install を実行すると、そのリストが npm によって認識され、ダウンロードしてインストールされます。
一方、bower はフロントエンドの依存関係を管理するために作成されました。jQuery、AngularJS、アンダースコアなどのライブラリ。npm と同様に、bower.json と呼ばれる依存関係のリストを指定できるファイルがあります。この場合、フロントエンドの依存関係は、デフォルトで bower_components というフォルダーにインストールされる bower install を実行することによってインストールされます。
ご覧のとおり、これらは同様のタスクを実行しますが、非常に異なるライブラリ セットを対象としています。
node.js を使用する多くの人にとって、bower の主な利点は、javascript ではない依存関係を管理できることです。JavaScript にコンパイルされる言語を使用している場合、npm を使用して依存関係の一部を管理できます。ただし、すべての依存関係が node.js モジュールになるわけではありません。JavaScript にコンパイルするものの中には、奇妙なソース言語固有のマングリングが含まれている可能性があり、ユーザーがソース コードを期待しているときに、JavaScript にコンパイルされたものを渡すのは洗練されていないオプションになります。
npm パッケージのすべてがユーザー向けの JavaScript である必要はありませんが、npm ライブラリ パッケージの場合は、少なくともその一部が必要です。