Node.jsのパッケージマネージャの使い方(yarn)


免責事項

この記事は初心者視点でザックリとした説明をしています。正確性に欠ける可能性がございますが、ご了承ください。「明らかに違うよ」ということがありましたら、ご指摘くださると幸いです。

環境

OS:最新版ではないMacOS
VirtualBox:5.2.26
Vagrant:2.2.6
Ubuntu:ubuntu/bionic64 v20181129.0.0

目次

  1. yarnとは
  2. yarnでパッケージのインストール
  3. yarnでパッケージを作ってみる

1. yarnとは

yarnとはNode.jsで使うパッケージを管理するものですが、
この説明をする前にパッケージについて説明します。

パッケージ

パッケージはライブラリを包むもの。
パッケージマネージャはライブラリを包み、管理するものです。

ライブラリ

ライブラリは先人が作った処理です。
汎用的な処理を実装する際に使います。
例えば、「複数の値の中で一番大きい数字がどれか判定したい!」という時があったとします。

ただ、この処理を1から作るのは、簡単そうにありません。

そこで、ライブラリを使います。
Javascriptには標準で、Math.max() という()内に引数として与えた数字の中で、一番大きい数字を返す「標準ビルトインオブジェクトMathのmaxメソッド」がライブラリとして標準で備わっています。

Math.max(2, 3, 1);
// expected output: 3

標準ビルトインオブジェクト...JavaScriptが標準で提供しているオブジェクト(ex: MathやDateなど)、ライブラリとして提供されています。
Node.jsドキュメント...Node.jsがバージョンごとに標準で、ライブラリを提供しています。

続いて、yarnについて説明していきます。
Node.jsが標準で備えているパッケージ管理ツールは npm(エヌピーエム)と呼ばれるものです。
npm公式サイトには誰かが作ったライブラリが公開されており、自由に利用することができます。

$ npm install パッケージ名

でパッケージをインストールすることができます。

2. yarnでパッケージのインストール

しかし、npmをさらに使いやすくしたパッケージ管理ツールyarnが誕生しました。
使い方としては、npmとほとんど一緒で、

$ yarn add パッケージ名

とします。
yarn addでパッケージをインストールすると、インストールを実行したディレクトリの中にあるnode_modulesというディレクトリに、パッケージがインストールされます。

node_modules ディレクトリにインストールされたnpmパッケージは、自動的に読み込まれ、そのディレクトリ内で以下のように利用することができます。

const 変数 = require('パッケージ名');

パッケージをrequire関数で取得することで、利用できるようになります。

3. yarnでパッケージを作ってみる

yarn(npm)では他人のパッケージを利用するだけでなく、自分でパッケージを作成しすることもできます。

$ mkdir パッケージ名のディレクトリ
$ cd パッケージ名のディレクトリ
$ yarn init

yarn initと入力すると、パッケージの設定画面がでてきます。

//パッケージ名を入力します。
name: (パッケージ名)
//バージョンの設定します。
version: (1.0.0)
//パッケージの説明を入力します。
description:
//ライブラリとして読み込まれるJavaScriptファイルを設定します。
entry point: (index.js)
//Gitリポジトリを公開する場合のURLを入力します。
repository url:
//npmに登録する際の著者の名前を設定します。
author:
//ライセンス名を入力します。
license: (MIT)
//公開の可否を入力します。
private:

パッケージの設定が成功すると以下のように表示されます。

success Saved package.json
Done in 9.20s.

では、ライブラリとして読み込まれるJavaScriptファイルを作成し、パッケージを作っていきます。
モジュールは関数型とオブジェクト型のどちらでも定義できます。

モジュールを関数型で定義

index.js
'use strict';
module.exports = add(a, b) {
  return a + b;
};

としても、

モジュールをオブジェクト型で定義

index.js
function add(a, b) {
  return a + b;
}
module.exports = {
  add : add
};

OR

index.js
module.exports = {
  add : (a, b) => {
  return a + b;
}
};

でも、パッケージとして使うことができます。

使用先のファイルでは、以下のように使います。

関数型で定義されたモジュールのパッケージを使うには

app.js
const add = require(パス or パッケージ名);
const result = add(1, 2);
console.log(result);
// expected output: 3

オブジェクト型で定義されたモジュールのパッケージを使うには

app.js
const 変数 = require(パス or パッケージ名);
const result = 変数.add(1, 2);
console.log(result);
// expected output: 3

requireの引数には、パッケージがnpm公式サイトに公開されていたらパッケージ名を指定し、
自分のPC上にあるならパスを指定します。

参考

「N予備校 プログラミングコース」
https://www.nnn.ed.nico/
「[NodeJS] モジュール定義について学ぶ」
https://www.yoheim.net/blog.php?q=20150101