Developer Blog エンジニアブログ

2019.04.22

📦JavaScriptのパッケージマネージャーについて。📦

こんにちは清木です

 

次のプロジェクトでnode.jsを使ってウェブサイトを作ることにしました。

ところで、開発行為を行なっていく上で便利な機能を使うために、ライブラリを使用することがよくあると思います。

ライブラリを使用するためには、ライブラリが含まれたパッケージをインストールする必要がありますね。

Pythonにはpip, .Netにはnuget, RustだとCargo, PHPだとComposerなどそれぞれの言語や環境に対応したパッケージのインストールなどの管理を行なってくれるソフトウェアがあります。

それらのソフトウェアのことをパッケージマネージャと呼びます。

また、WindowsやUnix LikeなOSにソフトウェアをインストールするためのソフトウェアもパッケージマネージャーもあります。

 

Windowsだとchocolatey 、Macだとmac portとかHomeBrewだとかです。

LinuxではArchLinuxで採用されているpacmanやdebian系で利用されているapt RedHat系ではyumが有名ですね。

 

もちろんJavaScriptというかnode.jsにもそのようなパッケージマネージャが存在します。

僕が名前を聞いたことがあるだけでnpm, yarn, Bowerの3つほどあります。

 

今回プロジェクトで使用するにあたりこの辺を知っとくべきだと思ったので、自分の勉強も兼ねてここに書いていきたいと思います。

 

npm

まず、npm。

npmは、node.jsをインストールしたらインストールされるデフォルトのパッケージマネージャです。

すごい有名。

npmでインストールしたパッケージはpackage.jsonというファイルに記録されます。

このpackage.jsonを管理しておけばどこでも同様の環境が作れるわけです。

便利ですね。

詳しい使い方は、調べたらすぐ出てくるので省いちゃいます。

 

ちなみに、グローバルインストールとローカルインストールの2種類があります。

グローバルインストールすると、npmのルート配下にあるnode_modulesにパッケージがインストールされます。

ここは、PATHが通っているため、全てのプロジェクトでパッケージが利用できるようになります。

ただ、グローバルインストールすると個別のpackage.json記載されないのでパッケージマネージャを使う意味がないので控えましょう。

使ってるIDEなどでグローバルインストールを要求されるときや、実況環境で共通するパッケージを使用する場合は素直にグローバルインストールしてください。

 

yarn

次はyarn。

yarnはnpmの上位互換的なパッケージマネージャって言われてるみたいです。

FaceBookが開発しました。

僕は使ったことないですが便利みたいです。使ったことないのでわからないですけど。

 

インストールにはnpmを使うみたいです

npm install -g yarn

上のコマンドを実行したらインストールできます。

必要あればsudoなどして管理権限使ってインストールしてください。

 

 

npm との違い、どこが上位互換なの?

npm との差ですが、インストールが早い事、インストール結果に一貫性がある(npmにはないのかな…?)、よりセキュアであるところみたいです。

 

yarnはインストールが早い

yarnとnpmはパッケージをインストールする際同じレポジトリを参照しています。

どうやったら早よなるねんって思いますが、簡単なことで

ダウンロードを並列で行うので早いみたいです。

また、一度ダウンロード下パッケージをグローバルにキャッシュとして保持してて次回以降はそこからコピーみたいです。

そりゃ早いですな…

 

yarnはインストール結果に一貫性がある

yarnでパッケージのインストールを行うとyarn.lockというファイルが生成されます。

npmにもpackage.jsonあるやん必要あるのかなと思いますけど、依存パッケージのバージョン情報を記録しているファイルで、これを参照すれば正確にパッケージがインストールできるということです。

 

yarnはよりセキュアである

yarnでは、パッケージのインストール前にチェックサムでパッケージの整合性を確認してるのでサーバに公開されているものと、ダウンロードされたものが同一とチェックした上でインストールするみたいで。それはセキュアですねと思います。

npmではパッケージのチェックサム取ってないってことなのでかな?昔npmでインストールしようとして整合性でエラーが起きた気がしますが果たしてどうなのでしょう。次回のブログまでに調べておきますね。

 

Bower

使ったことないのでわからないです。

npm経由でインストールする・フロントエンド用のパッケージマネージャらしい

このくらいしか知識がないので次回に書いていこうと思います。

 

 

今回はこれくらいにして次回Bowerについて調べていこうと思います。

以上です

 

この記事を書いたメンバー
清木太陽
清木太陽
エンジニア歴4年くらいです。 綺麗なコードを書くのが好きです パソコンと音楽が好きで、DJなどもやってます