海未「以前、モジュールの作り方と使い方について見ましたが、モジュールがプログラムの再利用に有効な手段であることは分かったと思います」
ことり「汎用的なモジュールができたら、いろんなところで使い回せるよね」
海未「はい。ですから、自分でコードを書く前に既存のモジュールがないか探した方が効率がよいのです」
穂乃果「でも、どうやって探したらいいの?海未ちゃんとかことりちゃんが作ったやつなら直接聞けばいいけど・・・」
海未「そのために、世界中のNode.js開発者が作ったモジュールを登録できるリポジトリが存在します。そこから簡単にモジュールをインストールしたり、自作モジュールを公開したりできるのです」
海未「まずはパッケージを探すところからいきましょう。以下のサイトで検索ができますから、必要なパッケージはここで探してみてください」
穂乃果「・・・英語」
海未「苦情は受け付けません」
海未「最初に、npm init
を使ってプロジェクトを初期化します。適当なディレクトリを掘って、そこでnpm init
を実行してください」
穂乃果「なんかいろいろ聞かれるけど・・・」
海未「今は気にせず、Enter連打でいいでしょう」
海未「この操作で、package.json
というファイルができました。これがあるディレクトリはnpmの管理下とみなされます」
ことり「.git
みたいなのだね」
海未「package.json
の中身は、今は気にしなくてもよいでしょう。パッケージとして公開したりビルドタスクを入れたりしたくなったら調べてください」
海未「では実際に、何かパッケージをインストールしてみましょう。ユニットテストに使うchaiというパッケージを入れてみます」
1 2 3 4 5 6 7 8 9 |
$ npm install chai --save npm WARN package.json npm_exam@1.0.0 No description npm WARN package.json npm_exam@1.0.0 No repository field. npm WARN package.json npm_exam@1.0.0 No README data chai@3.4.1 node_modules\chai ├── assertion-error@1.0.1 ├── type-detect@1.0.0 └── deep-eql@0.1.3 (type-detect@0.1.1) |
海未「このchaiを使ってみましょう」
1 2 3 4 |
var should = require("chai").should(); var a = 10; console.log(a.should.equal(10)); |
海未「中身は置いておいて、動作はしますね。これでchaiモジュールが使えるようになったわけです」
穂乃果「おおっ、ということは、これでパッケージ入れまくれば何でもできる!」
海未「何でもはできませんよ。できることだけ」
海未「今試した方法はローカルインストールといって、npmを実行したディレクトリに対してインストールするものです。ですから、他のディレクトリでは使えませんね」
ことり「うーん、バージョンとか依存関係とかごちゃごちゃになるからかなあ」
海未「プロジェクトごとに決められたバージョンのモジュールを使うことは多いですしね。ですが、npm install -g chai
とすれば、グローバルインストールといって全てのプロジェクトで使える状態にできます」
穂乃果「ほんとに汎用的なやつはグローバルで入れちゃえば楽だね」
海未「あとは、先ほどのpackage.json
を使う方法があります。npm install chai --save
というコマンドを使いましたが、この結果chaiをインストールしたという情報がpackage.json
に記録されています」
穂乃果「と、いうことは・・・」
海未「はい。package.json
を別のディレクトリにコピーして、そこでnpm install
を実行するとchaiがインストールされます。多数のパッケージに依存するプロジェクトでは有効ですね」
海未「このnpmを活用すると、車輪の再発明を防げると思います。ただし、当然ながら品質や安全性が保証されているものではありませんから、あまり怪しげなパッケージは使わないようにしましょう」