ヌルポインター親衛隊

社内でひとりエンジニアやってます。

npmを使っているか

進歩していく技術は山のようにあって、その技術の数だけ学ぶことがある。
最近、とあることをしようと思って、今までJavaScriptがあまり好きではなかったために手を出していなかったnpmにふれる機会ができた。

npmはNode Package Managerの略称で、Node.jsで作られたパッケージを管理するためのツールの一つ。競合にyarnやpnpmなどがあるらしいが、ここでは触れない。

そもそもNode.jsって何?

Node.jsって、サーバーサイドのJavaScriptってイメージ。詳しくは知らなかったため、ちょっと調べてみる。

公式ページによるとこんなかんじ。

Node.js はスケーラブルなネットワークアプリケーションを構築するために設計された非同期型のイベント駆動の JavaScript 環境です。 以下の「Hello World」の例では、たくさんの接続を同時に処理することができます。 各接続ごとにコールバックは発火され、何もすることがない場合、Node.js はスリープします。 - Node.js とは | Node.js

おーん(泣き声)、直訳。
サーバーサイドで動くJSというのは合っているぽいけど、どうやらパフォーマンスがいいよって感じのことも言ってるっぽい。
続けて読んでいくと、一般的なサーバーサイド環境だとOSのスレッドレベルでの処理になっちゃうけど、Node.jsは非同期でイベントを駆動するから効率的よって感。
細かいことはよくわかんないけど、PythonでいえばFlaskとかdjangoとか、RubyRuby on Railsって理解で良いみたい。

じゃあ、結局npmって何なん?

npmはNode.jsで使うパッケージを管理するツールと述べた。例を上げるのが一番簡単だと思うので、例えば、Bootstrapを使うことを考える。
普通、Bootstrapはサーバー側に組み込むか、CDNでホストされたものを引っ張ってきて使う。CDNの場合はカスタムできなかったり、スピードの点でどうなの?って話が出てくる。だからBootstrapのサイトからzipで一式を引っ張ってきてコンパイルしてどうのこうのすればいいねーってなるが、これは管理が非常に面倒。

getbootstrap.jp

だからできたのがnpm。
npmを使えば、npm installのコマンドでパッケージを入れられるどころか、プロジェクトごとに違うパッケージや、同じパッケージでも別バージョンを使うといった管理ができる。

そういや、、、pacmanとかaptとかbrewとかは自分でソフトウェアをMakeする必要がなくて、それと対応関係にあるね。pacman=npm, Make=zipで引っ張ってくる、みたいな。

かんたんな使い方

まずはnpmをインストールする。
今はMacを使っているので、brewで入れてみる。

$brew install npm

たとえば、今Gridsomeでブログを作ろうとしているんだけれど、gridsomeをnpmでインストールするにはこんなかんじ。

$mkdir gridsome-test-blog  
$npm install --global @gridsome/cli  

自分のM1 Macでは依存環境(dependency)が足りなくてエラーが出たが、それはまた別の記事に書きたい。

npmの使い方は、インストールしたいパッケージのサイトに必ず書いてあるから、それをコピペすれば基本的にはOK。
ちなみに、上の--globalオプションをつけないでいるとカレントディレクトリのnode_modulesにインストールされる。bootstrapとか、複数のサイトとかで使うパッケージはローカルインストールがいいね。


Twitterやっています。興味がありましたらフォローお願いします。
https://twitter.com/ell_sub3