Chapter 03

"my-hello-lib" ライブラリ

Kei Touge
Kei Touge
2022.02.27に更新

🛠️ ソースコードを用意する

前章で tsconfig.jsoninclude に指定したディレクトリとソースコードファイルを作成します。

zsh
% mkdir src
% touch src/index.ts

では、この src/index.ts を編集していきましょう。

src/index.ts
export const hello = (): void => {
  console.log('Hello.');
};

コンソールに Hello. と出力するだけ の関数を hello という名前でエクスポートしています(名前付きエクスポート)。
これではじめての JS ライブラリの完成です!(Hello. と表示する機能しかありませんが…)

名前付きエクスポートなので、他のファイルからはこの my-hello-lib ライブラリを以下のように利用できます。

src/temp.ts
import { hello } from '.';

hello();  // 'Hello.'

💻 ts-node で実行してみる

この temp.tsts-node で実行して動作確認をしてみましょう。

zsh
% npx ts-node ./src/tmp.ts

Hello.

ちゃんとコンソールに Hello. と(のみ)出力されました。

🔧 CommonJS 向けのライブラリをビルドする

では、この my-hello-lib ライブラリを Node.js で利用できる形式にコンパイルしましょう。

zsh
% npm run build

dist ディレクトリへ index.js ファイルが出力されたことを確認できるでしょう。

zsh
% tree -a -I 'node_modules'
.
├── dist
│   └── index.js
├── package-lock.json
├── package.json
├── src
│   └── index.ts
└── tsconfig.json

2 directories, 5 files

前章で package.jsonmain エントリに dist/index.js を指定しているため、Node.js ではこのスクリプトがデフォルトで読み込まれるはずです。

package.json
  "main": "dist/index.js",

実行してみましょう。

zsh
% node -e "require('.').hello()"
Hello.

このプロジェクトフォルダ(=ライブラリ)をインポートすると hello() メソッドが存在し、それを実行すると Hello. と出力されることが確認できました。