こんにちは。よっしーです(^^)
今日は、SvelteKitでのパッケージングについて解説しています。
背景
SvelteKitでのパッケージングについて調査する機会がありましたので、その時の内容を備忘として記事に残しました。
パッケージング
@sveltejs/package
パッケージを使用して、アプリケーションだけでなくコンポーネントライブラリも構築できます(npx sv create
にはこれを設定するオプションがあります)。
アプリケーションを作成する場合、src/routes
の内容が公開向けの部分となり、src/lib
にはアプリケーションの内部ライブラリが含まれます。
コンポーネントライブラリはSvelteKitアプリケーションとまったく同じ構造を持ちますが、src/lib
が公開向けの部分となり、ルートのpackage.json
がパッケージの公開に使用される点が異なります。src/routes
はライブラリに付属するドキュメントやデモサイトであったり、開発中に使用するサンドボックスであったりします。
@sveltejs/package
のsvelte-package
コマンドを実行すると、src/lib
の内容からdist
ディレクトリ(設定可能)が生成され、以下が含まれます:
src/lib
のすべてのファイル。Svelteコンポーネントは前処理され、TypeScriptファイルはJavaScriptにトランスパイルされます。- Svelte、JavaScript、TypeScriptファイルに対して生成される型定義(
d.ts
ファイル)。これにはtypescript >= 4.0.0
のインストールが必要です。型定義は実装の隣に配置され、手書きのd.ts
ファイルはそのままコピーされます。生成を無効にすることもできますが、強く推奨されません – ライブラリを使用する人々がTypeScriptを使用する可能性があり、その場合これらの型定義ファイルが必要となります。
@sveltejs/package
バージョン1ではpackage.json
を生成していましたが、現在はそうではなく、プロジェクトのpackage.json
を使用し、その正確性を検証するようになっています。バージョン1を使用している場合は、このPRを参照して移行手順を確認してください。
解説
この記事ではSvelteKitのパッケージング機能について説明しています。主なポイントを詳しく解説します:
- プロジェクト構造の違い:
- アプリケーション:
src/routes
→ 公開部分src/lib
→ 内部ライブラリ
- コンポーネントライブラリ:
src/lib
→ 公開部分src/routes
→ ドキュメント/デモ用
- パッケージングプロセス:
svelte-package
コマンドの使用dist
ディレクトリの生成- ファイルの前処理とトランスパイル
- 型定義の扱い:
- 自動生成される
d.ts
ファイル - TypeScript 4.0.0以上が必要
- 手書きの型定義ファイルの保持
- バージョン1からの変更点:
package.json
の生成方法の変更- プロジェクトの
package.json
の使用 - 検証プロセスの追加
このような構造は以下の場合に特に有用です:
- 再利用可能なコンポーネントライブラリの作成
- TypeScriptを使用したプロジェクト
- 公開用パッケージの開発
- ドキュメント付きのライブラリ開発
おわりに
今日は、 SvelteKitでのパッケージングについて解説しました。
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント