📦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について調べていこうと思います。
以上です
0