3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

おんJ民がnpmパッケージを公開してみた【TypeScript製お絵かきライブラリ】

Last updated at Posted at 2025-05-21

ワイはおーぷん2ちゃんねるのなんでも実況J(ジュピター)板の住民、おんJ民や。

よろしく頼むで

🤔 何を作ったのか

HTMLの<canvas>って、レイヤー機能がないやん?

だからワイ、レイヤー付きのお絵かきライブラリを作ってnpmで公開したんやで。
パッケージ名はこれや:pnpm i @onjmin/oekaki

DEMO

(DEMOは Svelte + @onjmin/oekaki の例やが多分他のFWでも使えるやで)

🎯 背景と動機

実はワイ、掲示板アプリを作ってるんやけど、
その1機能として 「お絵描き機能」 を搭載したかったんや。


お絵かき系のnpmパッケージやと fabric.js が有名や。
でも、レイヤー管理しようとするとめっちゃ面倒くさい。

🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺

  1. canvasを複数重ねて自前でレイヤー風に管理
  2. 各レイヤーの状態保存・切り替え・描画制御

🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺🥺

とかやろうとすると、 「これもう自分で作った方が早いやろ」 ってなったんや。
だから fabric.js を捨てて、TypeScriptでフルスクラッチ実装したんやで。


当初は、お絵描きのロジックをそのまま アプリ内libディレクトリっぽい場所に置いてたんやけど、
気づいたら 4ファイル にまで肥大化してもうて

これリポジトリごと分離した方が良くね?

ってことで、 お絵描きライブラリ部分だけnpmパッケージとして独立&公開 したんや。

結果的に管理も開発もかなりスッキリしたんやで 🫵😎

開発環境のセットアップ

1. GitHubでリポジトリを作成

まずはパッケージ用にGitHubで新しいリポジトリを作成。
自動で生成された初期コミット付きのリポジトリをgit cloneして、ローカルで開発を始めたで。

2. 開発に必要なパッケージのインストール

以下のパッケージを使ったで:
  • typescript:TypeScriptで書くなら当然これがベースや。

  • @biomejs/biome:フォーマット・リントこなせる便利ツール。
    eslintやprettierを組み合わせるよりも楽。

  • tsup:超高速なTypeScript用バンドラー。
    バンドラーでググって上位に出てきたやつを選んだだけやで

  • typedoc:TypeScriptの型から自動でドキュメントを生成してくれるやつ。
    資料を作るのに時間かけてられんからな

📚完成したドキュメントhttps://onjmin.github.io/oekaki

	"devDependencies": {
		"@biomejs/biome": "1.9.4",
		"tsup": "8.5.0",
		"typedoc": "0.28.4",
		"typescript": "5.8.3"
	}
💩不要と判断したモノ💩
  • ビルド不要のTS実行環境 → tsx
    デバッグしながら書くならtsxは便利なんやけど
    もう出来上がってたから要らね

  • 🧪 テストツール → jest
    リント(biome)で型・構文エラーをきっちり潰せば正直十分じゃねーの?

3. npm公開までの流れ

アカウントだけ作れば誰でも公開できるやで
名前空間も取り放題や

	"scripts": {
		"build": "tsup",
		"lint": "biome check .",
		"format": "biome format . --write",
		"docs": "typedoc src/index.ts --out docs",
		"release": "pnpm run build && pnpm run lint && pnpm run format && pnpm run docs",
		"patch": "pnpm version patch",
		"publish-dangerous-dont-use-this-command": "pnpm publish --access public"
	}

基本的には更新がしたくなったら3回コマンド叩けば済むようにしてるで

pnpm run release:ビルド + リントチェック + 整形 + ドキュメント生成
pnpm run patch:npmパッケージのバージョンを上げる
pnpm publish --access public:更新後の内容を公開

おわり

意外と簡単やな😳

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?