Keystone parece desatualizado atualmente, recomendo que você dê uma olhada no Astro ou no Vite.

Keystone é um gerador de sites estáticos ideal para construir pequenos sites rapidamente. Nenhuma configuração é necessária e uma coleção de recursos úteis estão habilitados por padrão.
/public e você estará pronto para começarCrie um novo diretório e execute o seguinte comando para configurar Keystone, package.json e git. Nó 14.xx necessário.
$ npm install keystone-ssg
Ótimo, você está instalado!
Inicie o servidor de desenvolvimento Keystone e acesse http://localhost:8080 para ver o site de exemplo.
$ npm run dev
O projeto é construído na pasta /public após a execução do comando, pronto para upload.
$ npm run build
Existem seis diretórios importantes dentro de um projeto Keystone, cada um com sua finalidade:
Cada arquivo HTML .html e markdown .md na pasta de páginas corresponde a uma página do seu site. Existem dois arquivos no projeto de exemplo aqui, tente abrir index.html . O roteamento automático agrupará os arquivos na pasta /public ao executar npm run build assim:
/pages/index.html -> /public/index.html
/pages/example.md -> /public/example/index.html
Você deve ter notado que index.html possui a seguinte tag: <_template basic.html /> . Isso coloca o conteúdo de index.html dentro do arquivo de modelo com slot em /templates/basic.html . Este formato de tag HTML personalizado também funciona em arquivos .md .
Os modelos podem ser usados com /pages para fornecer uma estrutura pronta para suas páginas. Use uma tag <_slot /> no arquivo de modelo para fornecer um ponto de entrada para seu conteúdo. Abra /templates/basic.html e procure:
< _var title default="Keystone default title" /> Este é um slot variável, denominado title , em um arquivo de modelo, com um valor padrão opcional.
Usar o seguinte como tag de modelo dentro de /pages permitirá que você insira um valor personalizado no modelo, a partir de uma página de conteúdo:
< _template basic.html title="A custom title" /> A pasta /components é usada simplesmente para componentes reutilizáveis. A tag <_import> é usada para importar componentes para outros arquivos HTML, um exemplo disso está dentro de /templates/basic.html .
< _import header.html /> A tag <_import> também pode ser usada para importar o conteúdo de qualquer outro tipo de arquivo (JS, SCSS etc), após primeiro agrupar a fonte.
Coloque os arquivos Javascript na pasta /src . A tag a seguir será convertida em uma tag de importação <script> normal, vinculada ao seu arquivo /src/main.js :
< _script main.js />As importações ES6 são totalmente suportadas e o arquivo resultante será transpilado com Babel, empacotado com Rollup e minificado.
A pasta /styles é usada para seu CSS/SCSS. A tag a seguir será convertida em uma tag de importação css <link> normal, vinculada ao seu arquivo /styles/main.scss compilado:
< _style main.scss /> Todos os recursos node-sass são totalmente suportados, incluindo @import .
Ativos estáticos são colocados aqui, ou seja, fontes, imagens, ícones. Tudo aqui será transferido para a pasta correspondente no diretório raiz, por exemplo:
/assets/favicon.ico -> /public/favicon.ico
/assets/fonts/fontname.ttf -> /public/fonts/fontname.ttf
<_template src='myfolder/myfile.html' /> .package.json , não use uma barra inicial, a menos que queira acessar um arquivo fora do projeto..keystone-page-loading é definida como display: block . Se a classe estiver configurada para display: none no CSS, isso pode ser usado para criar um indicador de carregamento.search.json , no diretório raiz. Este é um array JSON que contém um objeto para cada página, listando o conteúdo do texto, o título e o caminho da página.public é ignorada pelo Git, remova a linha public de .gitignore caso deseje usá-la para enviá-la ao Git. package.json pela versão para a qual você está atualizando e execute npm install keystone-ssg , para uma atualização rápida.| Marcação | Descrição | Atributos |
|---|---|---|
<_template> | Importa o arquivo atual para um <_slot> dentro do arquivo de modelo | [nome do arquivo], [nome da variável], src |
<_slot> | Usado em um arquivo de modelo como ponto de entrada para o arquivo importado | Nenhum |
<_var> | Usado em um arquivo de modelo para ser substituído por uma variável obtida de <_template> | [nome da variável], padrão |
<_import> | Importa um componente | [nome do arquivo], src |
<_script> | Cria uma tag <script> vinculada ao script incluído | [nome do arquivo], src |
<_style> | Cria uma tag <link> vinculando ao arquivo css incluído | [nome do arquivo], src |
| Comando | Descrição | Diferenças de saída |
|---|---|---|
npm run dev | Constrói o site para desenvolvimento e, em seguida, inicia o servidor de desenvolvimento Keystone. |
|
npm run build | Constrói o site para produção. |
|
O arquivo de configuração é keystone.config.js
| Opção | Descrição | Padrão |
|---|---|---|
| links dinâmicos | Permite links locais carregados dinamicamente em seu site Keystone, sem necessidade de atualização | verdadeiro |
| arquivo de pesquisa | Gera search.json no diretório raiz | verdadeiro |
| indexPath | O diretório raiz do seu site | '/' |
| porta | A porta do servidor de desenvolvimento, localhost: 8080 | 8080 |
| portasWs | Uma segunda porta usada para o servidor de desenvolvimento | 8081 |
| devServerIp | A localização do servidor de desenvolvimento, localhost :8080. Substitua pelo IP local do seu dispositivo para visualizar o servidor de desenvolvimento em dispositivos locais (exemplo: '192.168.1.103'). | 'localhost' |
| assistido | Os diretórios monitorados pelo servidor de desenvolvimento Keystone, que forçarão uma recompilação e atualização da página quando os arquivos forem editados | ['modelos', 'páginas', 'ativos', 'componentes', 'src', 'estilos'] |
| construir | O diretório da página de conteúdo | 'páginas' |
| servido | O diretório que contém o site gerado | 'público' |
| completoRecompilar | Forçar uma recompilação completa de todos os arquivos após cada alteração de arquivo no modo de desenvolvimento | falso |
| empty-keystone-project
--| .git/
--| assets/
--| components/
--| pages/
--| src/
--| styles/
--| templates/
--| keystone.config.js
--| package.json
--| package-lock.json
Se você tiver um PLUGIN_ERROR após instalar e executar o exemplo, este é um problema do Babel, execute o seguinte comando para corrigi-lo:
npm install @babel/core @babel/preset-env --save-dev