0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

npm installでインストールできるモジュールを作るまでの流れについて

Posted at

はじめに

npmでインストール可能なモジュール(パッケージ)のなるべく最小構成の作成方法が中々見つからなかったので、簡単にまとめました。

環境

  • Node.js 12.16
  • npm 6.14

ファイル構成

npmパッケージには、1つのディレクトリ内にモジュールのソースコードセット、package.json、エントリーポイントとなるjsファイル(今回はindex.jsとする)の3種類が必要となる。

今回の例としては、ディレクトリをmodtest、モジュールのソースコードをサブディレクトリlibの配下に2種類(hello.js, hello2.js)、index.jsとします。

  • modtest/
    • lib/
      • hello.js
      • hello2.js
    • index.js
    • package.json

モジュールの作成

1. ディレクトリ作成

空のディレクトリ(今回はmodtest)を作成しておきます。

2. package.jsonの作成

空のディレクトリへ移動し、npm initコマンドを実行します。

npm init

対話式にモジュール名、バージョン番号等のパッケージ情報を尋ねられるため、必要事項を入力すると、同ディレクトリに下記のようなpackage.jsonが作成されます。

package.json
{
  "name": "modtest",
  "version": "1.0.0",
  "description": "The test modules for npm.",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "aqmr-kino",
  "license": "ISC"
}

3. ライブラリモジュールの作成

3.1 モジュール作成

モジュール化する対象のコードを作成します。
今回はサンプルとして関数1個(hello)とクラス1個(Hello)を作成します。

各ファイルの最後にmodule.exportsを使用して外部からアクセス可能とする関数を設定します。(exportした関数やクラスのみがpublicな関数やクラスとして公開されます)

lib/hello.js
function hello() {
    return "hello"
}

module.exports = {
    hello,
}
lib/hello2.js
class Hello {
    constructor(v) {
        this.value = v;
    }
    hello() {
        return ("hello, " + this.value);
    }
}

module.exports = {
    Hello,
}

3.2 メインモジュール作成

パッケージのメインファイルとなるjsファイルを作成します。
今回は、index.jsという名前で作成していますが、package.jsonmainに記載するファイル名を変更することで変更可能です。
モジュールを利用するファイルからrequireで読み込んだ場合に実行されるスクリプトで、基本的にはライブラリモジュールを読み込んで、任意の名前で再度exportしておきます。(このファイルでexportされた識別子がモジュールを利用するコードから呼び出すことができる要素となります)

index.js
const hello = require('./lib/hello.js')
const hello2 = require('./lib/hello2.js')

module.exports = {
    hello,
    hello2,
}

モジュールのインストール

上記の各種ファイルセットを作成後、npm installコマンドでpackage.jsonがあるディレクトリを指定することで、パッケージとしてインストールすることが可能です。

ローカルのディレクトリから

npm installコマンドで作成したモジュールセットの格納されたディレクトリを指定することでモジュールとしてインストールすることができます。

npm install ./modtest

GitHubから

上記のファイル構成をGithubのリポジトリとしては登録しておけば、npm installでコマンドでgit+リポジトリのURLを指定することによりインストールすることもできる。

npm install git+https://github.com/user_name/repository_name.git

インストールしたモジュールの使い方

npmでパッケージとしてインストールしたモジュールは一般的なnpmパッケージと同様にrequireで読み込み、パッケージ内でexportされている各関数やクラスを利用することができる。

main.js
const modtest = require('modtest')

// helloメソッド(hello.js内)
console.log(modtest.hello.hello())

// hello2.Heloクラス(hello2.js内)
var h = new modtest.hello2.Hello("test")
console.log(h.hello())

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?