npm パッケージ(@ablogcms/*)
管理画面フロントエンドの一部を npm パッケージとして公開しています。型補完を受けながらプラグインを開発したり、管理画面と同じ UI コンポーネントを使って独自の画面を作れます。
実験的機能
この機能は、Ver. 3.2 の間は実験的機能として提供し、Ver. 3.3 で正式に提供する予定です。
- 変わりうる範囲: 公開しているサブパスと API は、マイナーバージョンアップで変更される可能性があります。
- 変わらない範囲: サイト表示側の組み込み JS は、従来どおり
ACMS.Library経由で使えます。テーマの書き方は変わりません。 - 公開 API の線引き: このページの「公開 API」に掲載しているものを公開 API として扱います。それ以外は保証対象外のパッケージとして扱います。
- サポート対象外: 管理画面に追加した独自の JavaScript・CSS は、バージョンアップ後の動作を保証しません。これらを原因とする不具合は、サポートの対象外です。
npm パッケージを使わなくてもプラグインは書けます。 window.ACMS 経由のグローバル API だけで、イベントの購読・UI の差し込み・機能の登録はすべて行えます(管理画面の JavaScript 拡張)。
対応バージョン: Ver. 3.2.29 以降(パッケージは、同じバージョン番号の a-blog cms 向けに npm で公開しています)
公開ポリシー
- このページで説明しているものが公開 API です。 それ以外のパッケージ・サブパスも利用できますが(保証対象外)、告知なく変更されることがあります。
- バージョンは a-blog cms 本体と一致します。 利用している CMS と同じバージョンを指定してください。
- ESM のみを配布しています。
require()では読み込めません。バンドラ、または ESM に対応した Node.js で利用してください。 - 公開しているサブパス以外を import しないでください。内部のパスは予告なく変わります。
npm install @ablogcms/types@3.2.37上の例は Ver. 3.2.37 の場合です。^3.2.37 のような範囲指定ではなく、利用している CMS と同じバージョンを固定することを推奨します。
公開 API
使い方をドキュメントで説明しているパッケージです。
| パッケージ | 内容 | ドキュメント |
|---|---|---|
@ablogcms/types | ACMS グローバルの型定義 | 開発環境と型定義 |
@ablogcms/events | イベントの型定義・イベント型の宣言 | イベント |
@ablogcms/plugins | プラグイン API の型・withFillProps | プラグイン API |
@ablogcms/components | 管理画面の UI コンポーネント(Slot / Fill を含む) | 管理画面と同じ見た目で画面を作る |
@ablogcms/block-editor | ブロックエディターの型・Tiptap / ProseMirror の参照口 | オリジナルブロックを作る |
@ablogcms/unit-editor | ユニットエディターの型 | オリジナルユニットを作る |
@ablogcms/acms.css | 管理画面の CSS フレームワーク | スタイルガイド |
@ablogcms/url | URL の生成・解析(acmsPath / parseAcmsPath など) | acmsパス |
@ablogcms/validator | フォームのバリデーション | バリデーター |
@ablogcms/fetch-client | CSRF トークンを付与する通信クライアント | 下記 |
@ablogcms/dom-ready | DOM の構築完了を待つ | 下記 |
@ablogcms/deprecated | 非推奨の警告をデバッグ時に表示する | 下記 |
@ablogcms/a11y | スクリーンリーダーへの通知 | 下記 |
@ablogcms/i18n | 翻訳の取得・プラグインの翻訳リソース | 下記 |
保証対象外のパッケージ
管理画面が内部で使っているパッケージです。利用は自由ですが、個別の使い方は説明しておらず、告知なく変更されることがあります。バージョンを固定して利用してください。
| パッケージ | 内容 |
|---|---|
@ablogcms/media | メディアライブラリの UI |
@ablogcms/utils / @ablogcms/lib | 汎用ユーティリティ・実行基盤(遅延読み込み・スクリプトローダーなど) |
@ablogcms/dialog / modal / drawer / notify / tooltip / tab / pending | 管理画面の UI 制御(確認ダイアログ・モーダル・通知など) |
@ablogcms/resize-image / read-files / pdf | 画像のリサイズ・ファイル読み込み・PDF プレビュー |
@ablogcms/wysiwyg-editor | リッチエディター(Trumbowyg ベース) |
@ablogcms/keyboard-shortcut / background-process | キーボードショートカット・バックグラウンド処理の進捗表示 |
@ablogcms/kanban | カンバン表示 |
@ablogcms/react-hooks / react-router / react-utils | React 用のヘルパー |
@ablogcms/acms-icons / command | アイコン名の一覧・修飾キーの表示 |
@ablogcms/htmx | htmx の組み込み |
これらの機能をサイト表示側で使う場合は、npm ではなく ACMS.Library 経由の呼び出し(組み込み JS)を使ってください。そちらは従来からの公開仕様です。
公開 API の使い方
url と validator は、上の表のリンク先(組み込み JS のドキュメント)で、同じ機能の使い方を説明しています。npm パッケージでも、引数と戻り値は同じです。以下は、それ以外のパッケージの使い方です。
fetch-client
CSRF トークン(window.csrfToken)と X-Requested-With ヘッダーを付けて、fetch で通信します。window.csrfToken は、組み込み JS が、ページの <meta name="csrf-token"> から設定します。組み込み JS を読み込んでいないページで使う場合は、自分で設定してください。ステータスが成功以外のときは FetchError を投げます。
import { fetchClient, isFetchError } from '@ablogcms/fetch-client';
try {
const { data, status } = await fetchClient.get(location.pathname, { responseType: 'text' });
console.log(status, data.length);
} catch (error) {
if (isFetchError(error)) {
console.log(error.status, error.statusText);
}
}fetchClient.post(url, body, config) の body には、FormData・URLSearchParams・オブジェクト(JSON として送信)を渡せます。ファイルのアップロードで進捗が必要な場合は、@ablogcms/fetch-client/xhr-upload の xhrUpload(url, formData, { onUploadProgress }) を使います。
dom-ready
DOM の構築が終わってからコールバックを実行します。すでに終わっていれば、その場で実行します。
import domReady from '@ablogcms/dom-ready';
domReady(() => {
console.log('DOM の準備ができました');
});deprecated
デバッグモードのときだけ、コンソールに非推奨の警告を出します。本番では何も出しません。
import deprecated from '@ablogcms/deprecated';
deprecated('旧オプション old-option', {
since: '2026.01.01',
version: '3.2.0',
alternative: 'new-option',
});a11y
スクリーンリーダーにメッセージを読み上げさせます。第2引数は 'polite'(既定)か 'assertive' です。
import { announce } from '@ablogcms/a11y';
announce('保存しました');
announce('保存に失敗しました', 'assertive');i18n
ACMS.i18n と同じ翻訳を引きます。プラグインが ctx.i18n.addResources() で登録した翻訳は、プラグイン名:キー の形で引きます(機能の登録(レジストリ))。
import { t, getLanguage } from '@ablogcms/i18n';
console.log(getLanguage());
console.log(t('my-plugin:greeting'));コンポーネントの一覧と実例
管理画面の UI コンポーネントは Storybook で確認できます。実際の表示、指定できる props、バリエーションが載っています。
Storybook には、管理画面で使っているコンポーネントを掲載しています。このページで説明しているもの以外は保証対象外です(告知なく変更されることがあります)。
ACMS グローバルの型を使う
{
"compilerOptions": {
"types": ["@ablogcms/types/acms"]
}
}使う機能の型は、対応するパッケージの ./acms を import した分だけ厳密になります(型だけを読み込むため import type {} from と書きます)。
import type {} from '@ablogcms/types/acms';
import type {} from '@ablogcms/events/acms';
import type {} from '@ablogcms/url/acms';詳細は 開発環境と型定義 を参照してください。
管理画面と同じ見た目を使う
npm install @ablogcms/acms.css@3.2.37import '@ablogcms/acms.css';クラス名の一覧は スタイルガイド を参照してください。管理画面のテンプレートの中に差し込む場合は、CSS はすでに読み込まれているためインストールは不要です。
組み込み JS との対応
サイト表示側の機能は、従来どおり組み込み JS として提供しています。テーマの書き方は変わりません。 参考として、実装が入っているパッケージを示します。
| 機能 | ドキュメント | パッケージ |
|---|---|---|
| フォームのバリデーション | 組み込みJSによるバリデーション | @ablogcms/validator |
| 遅延読み込み | 遅延読み込み | @ablogcms/lib |
| URL の生成(acmsパス) | acmsパス | @ablogcms/url |
| 画像のリサイズ・アップロード | 組み込みJS | @ablogcms/resize-image / @ablogcms/read-files |
変更履歴
| バージョン | 変更内容 |
|---|---|
| Ver. 3.2.29 | 実験的機能として公開 |