npm-library-setup について
npm-library-setupは、ESMを優先するnpmライブラリの設定を開発者向けに案内するスキルです。package exports、バンドル、テストに加え、TypeScriptやReactコンポーネントライブラリの構成も扱います。
主な機能
- 01ESM優先のパッケージ設定
- 02最新のpackage.json exports
- 03Buncheeのビルド設定
- 04Vitestのテスト設定
- 05TypeScriptとReactライブラリのガイド
活用シーン
- 01ESM npmパッケージの開始
- 02TypeScriptライブラリの設定
- 03Reactコンポーネントライブラリの構成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ huozhi/ npm-skills --skill npm-library-setupインストール後、Claude Code で/npm-library-setupを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/example-package/package.jsonREADME.mdexamples/example-package/src/helpers.jsindex.jsexamples/example-ts-package/package.jsonREADME.mdtsconfig.jsonexamples/example-ts-package/src/helpers.tsindex.test.tsindex.tsreferences/guides/01-getting-started.md02-package-json-config.md03-esm-syntax.md04-building-and-testing.md05-best-practices.md06-typescript.md07-react.md08-dual-package.md詳細
ESM を使用した npm ライブラリのセットアップ
このスキルでは、ES Modules(ESM)を優先して、package.json を使用した npm ライブラリのセットアップ方法を包括的に説明します。
概要
このスキルでは、次のような npm パッケージを作成できます。
"type": "module"を使用して ES Modules(ESM)を利用する- 最新の
exportsフィールドを設定する(非推奨のmoduleフィールドは使用しない) - ゼロ設定でバンドルできる bunchee を使用する
- 最新のテストに vitest を使用する
- TypeScript と React コンポーネントライブラリをサポートする
このスキルを使用するタイミング
次の場合に使用します:
- 「npm パッケージをセットアップする」
- 「新しい npm ライブラリを作成する」
- 「ESM 用に package.json を設定する」
- 「TypeScript の npm パッケージをセットアップする」
- 「React コンポーネントライブラリを作成する」
対象カテゴリ:
- ESM を使用した基本的なパッケージのセットアップ
- TypeScript パッケージの設定
- React コンポーネントライブラリのセットアップ
- bunchee を使用したビルド設定
- vitest を使用したテストのセットアップ
クイックスタート
-
パッケージを初期化します。
npm init -y -
package.jsonに"type": "module"を追加して ESM 用に設定します。 -
ビルドツールとテストツールをインストールします。
npm install -D bunchee vitest -
src/にソースファイルを作成し、npm run buildを実行します。
基本的な設定
package.json
{
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
}
},
"scripts": {
"build": "bunchee",
"test": "vitest",
"test:run": "vitest run"
},
"engines": {
"node": ">=20"
}
}
注: 現在メンテナンスされている LTS バージョンのうち、最も古いものを使用してください(Node.js リリーススケジュールを確認してください)。
主な原則
- ESM 優先: 純粋な ESM パッケージでは
"type": "module"を使用します - 最新の exports: 非推奨の
moduleフィールドではなく、exportsフィールドを使用します - ゼロ設定のバンドル: Bunchee がほとんどの設定を自動的に処理します
- ファイル拡張子: インポートでは明示的な
.js拡張子を使用します(TypeScript 内でも同様です) - ケバブケースのファイル名: ファイルパスにはケバブケースを使用します
TypeScript のセットアップ
TypeScript をインストールして設定します。
npm install -D typescript @types/node
tsconfig.json を作成します。
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "NodeNext",
"declaration": true,
"strict": true
}
}
Bunchee は TypeScript を自動的にコンパイルし、.d.ts ファイルを生成します。
React コンポーネントライブラリ
React を開発用依存関係としてインストールします。
npm install -D react @types/react
peerDependencies を設定します。
{
"peerDependencies": {
"react": "*"
}
}
ベストプラクティス
- ✅
exportsフィールドを使用する(非推奨のmoduleフィールドは使用しない) - ✅ インポートでは明示的なファイル拡張子(
.js)を使用する - ✅ ファイルパスにはケバブケースを使用する
- ✅ 実行時依存関係と開発用依存関係を分ける
- ✅ メンテナンスされている最も古い LTS バージョンを Node.js のバージョンとして指定する
- ✅ ソースコードは ESM 構文で記述する
よくあるパターン
ESM のインポート/エクスポート
// Named exports
export function greet(name) {
return "Hello, " + name + "!";
}
// Default export
export default class MyLibrary {}
// Import
import { greet } from './module.js';
import MyLibrary from './MyLibrary.js';
重要: TypeScript ファイルでも、インポートには必ず .js 拡張子を使用してください。
ファイル構成
my-package/
├── package.json
├── src/
│ ├── index.js # or index.ts
│ └── helpers.js
├── dist/ # Build output
└── README.md
参考資料
詳しいガイドについては、references/ ディレクトリを参照してください。
- 入門ガイド
- Package.json の設定
- ESM の構文とパターン
- ビルドとテスト
- TypeScript パッケージ
- React パッケージ
- ベストプラクティス
例
動作する完全な例については、examples/ ディレクトリを参照してください。
- JavaScript ESM パッケージ
- TypeScript ESM パッケージ
追加リソース
- Node.js リリーススケジュール - メンテナンスされている最も古い LTS バージョンを確認します
- Bunchee ドキュメント - ビルドツール
- Vitest ドキュメント - テストランナー