Keystone は最近時代遅れに見えます。代わりに Astro または Vite を検討することをお勧めします。
Keystone は、小規模な Web サイトを迅速に構築するのに最適な静的サイト ジェネレーターです。セットアップは必要なく、一連の便利な機能がデフォルトで有効になっています。
/public
アップロードするだけで準備完了新しいディレクトリを作成し、次のコマンドを実行して Keystone、package.json、git をセットアップします。ノード 14.xx が必要です。
$ npm install keystone-ssg
無事、インストールされました!
Keystone 開発サーバーを起動し、http://localhost:8080 に移動してサンプル Web サイトを表示します。
$ npm run dev
コマンドの実行後、プロジェクトが/public
フォルダー内にビルドされ、アップロードできるようになります。
$ npm run build
Keystone プロジェクト内には 6 つの重要なディレクトリがあり、それぞれに独自の目的があります。
ページ フォルダー内のすべての HTML .html
およびマークダウン.md
ファイルは、Web サイト上のページに対応します。ここのサンプル プロジェクトには 2 つのファイルがありますindex.html
を開いてみてください。自動ルーティングにより、次のようにnpm run build
実行すると、ファイルが/public
フォルダーにバンドルされます。
/pages/index.html -> /public/index.html
/pages/example.md -> /public/example/index.html
お気付きかもしれませんが、 index.html
は<_template basic.html />
というタグがあります。これにより、 index.html
の内容が/templates/basic.html
のスロット付きテンプレート ファイル内に配置されます。このカスタム HTML タグ形式は.md
ファイル内でも機能します。
テンプレートを/pages
とともに使用すると、ページに既製のフレームワークを提供できます。テンプレート ファイル内で<_slot />
タグを使用して、コンテンツのエントリ ポイントを提供します。 /templates/basic.html
を開いて、以下を探します。
< _var title default="Keystone default title" />
これは、テンプレート ファイル内のtitle
という名前の変数スロットであり、オプションのデフォルト値を持ちます。
/pages
内のテンプレート タグとして以下を使用すると、コンテンツ ページからテンプレートにカスタム値を入力できるようになります。
< _template basic.html title="A custom title" />
/components
フォルダーは、再利用可能なコンポーネントにのみ使用されます。 <_import>
タグは、コンポーネントを他の HTML ファイルにインポートするために使用されます。その例は/templates/basic.html
内にあります。
< _import header.html />
<_import>
タグは、最初にソースをバンドルした後、他の種類のファイル (JS、SCSS など) のコンテンツをインポートするために使用することもできます。
Javascript ファイルを/src
フォルダー内に配置します。次のタグは通常の<script>
import タグに変換され、ファイル/src/main.js
にリンクされます。
< _script main.js />
ES6 インポートは完全にサポートされており、結果のファイルは Babel でトランスパイルされ、Rollup にバンドルされて、縮小されます。
/styles
フォルダーは CSS/SCSS に使用されます。次のタグは通常の<link>
css import タグに変換され、コンパイルされた/styles/main.scss
ファイルにリンクされます。
< _style main.scss />
@import
を含むすべてのnode-sass
機能が完全にサポートされています。
静的アセット、つまりフォント、画像、アイコンがここに配置されます。ここにあるものはすべて、ルート ディレクトリの対応するフォルダーに転送されます。例:
/assets/favicon.ico -> /public/favicon.ico
/assets/fonts/fontname.ttf -> /public/fonts/fontname.ttf
<_template src='myfolder/myfile.html' />
。package.json
を含むフォルダーに対する相対パスです。プロジェクトの外部のファイルにアクセスする場合を除き、最初のスラッシュを使用しないでください。.keystone-page-loading
クラスがdisplay: block
ように設定されます。 CSS でクラスがdisplay: none
に設定されている場合、これを使用して読み込みインジケーターを作成できます。search.json
ルート ディレクトリに生成します。これは、ページごとのテキスト コンテンツ、タイトル、およびページのパスをリストするオブジェクトを含む JSON 配列です。public
フォルダーは Git によって無視されます。Git にコミットするために使用する場合は、 .gitignore
からpublic
行を削除してください。 package.json
のバージョン番号を更新先のバージョンに置き換え、 npm install keystone-ssg
実行すると、簡単にアップグレードできます。タグ | 説明 | 属性 |
---|---|---|
<_template> | 現在のファイルをテンプレート ファイル内の<_slot> にインポートします | [ファイル名]、[変数名]、src |
<_slot> | インポートされたファイルのエントリ ポイントとしてテンプレート ファイル内で使用されます。 | なし |
<_var> | テンプレート ファイル内で使用され、 <_template> から取得した変数に置き換えられます。 | [変数名]、デフォルト |
<_import> | コンポーネントをインポートします | [ファイル名]、ソース |
<_script> | バンドルされたスクリプトにリンクする<script> タグを作成します | [ファイル名]、ソース |
<_style> | バンドルされた CSS ファイルにリンクする<link> タグを作成します | [ファイル名]、ソース |
指示 | 説明 | 出力の違い |
---|---|---|
npm run dev | 開発用の Web サイトを構築し、Keystone 開発サーバーを起動します。 |
|
npm run build | 本番用のWebサイトを構築します。 |
|
設定ファイルはkeystone.config.js
です
オプション | 説明 | デフォルト |
---|---|---|
ダイナミックリンク | Keystone Web サイトに動的にロードされるローカル リンクを有効にし、更新する必要はありません | 真実 |
検索ファイル | ルートディレクトリにsearch.json 生成します。 | 真実 |
インデックスパス | Web サイトのルート ディレクトリ | '/' |
ポート | 開発サーバーのポート、ローカルホスト: 8080 | 8080 |
ポートW | 開発サーバーに使用される 2 番目のポート | 8081 |
開発サーバーIp | 開発サーバーの場所、 localhost :8080。ローカル デバイス上の開発サーバーを表示するには、デバイスのローカル IP に置き換えます (例: '192.168.1.103')。 | 「ローカルホスト」 |
見た | Keystone 開発サーバーによって監視されるディレクトリ。ファイルの編集時に再コンパイルとページの更新が強制されます。 | ['テンプレート'、'ページ'、'アセット'、'コンポーネント'、'ソース'、'スタイル'] |
建てる | コンテンツページのディレクトリ | 「ページ」 |
提供されました | 生成された Web サイトが含まれるディレクトリ | '公共' |
フルリコンパイル | 開発モードでファイルを変更するたびに、すべてのファイルの完全な再コンパイルを強制します。 | 間違い |
| empty-keystone-project
--| .git/
--| assets/
--| components/
--| pages/
--| src/
--| styles/
--| templates/
--| keystone.config.js
--| package.json
--| package-lock.json
サンプルをインストールして実行した後に PLUGIN_ERROR が発生した場合、これは Babel の問題であり、次のコマンドを実行して修正します。
npm install @babel/core @babel/preset-env --save-dev