Pular para o conteúdo

Módulos e execução

Um projeto de blog recebe módulos: peças que acrescentam recursos ao painel, como os posts, as tags ou a newsletter. Esta página mostra como escolhê-los e como rodar o projeto no computador e em produção.

Sem --modules, o projeto recebe os nove módulos oficiais. Com --modules, recebe só os ids pedidos, separados por vírgula, e os módulos de que eles dependem. A opção só vale com --template blog.

MóduloRequer
postsnenhum
categoriasposts
paginasnenhum
tagsposts
seoposts e paginas
redirecionamentosnenhum
metricasposts
comentariosposts
newsletternenhum

Um id fora da lista é recusado, com os ids disponíveis. Um id vazio, como posts,,tags, também é recusado.

Por exemplo, slash create meu-blog --template blog --modules tags instala posts e tags. O posts entra porque tags depende dele, e vem primeiro na lista do projeto. O arquivo que lista os módulos fica assim:

src/modules/index.ts
// Generated by `slash create`: the installed modules, dependencies first.
import type { ModuleDef } from "../panel/contract/index";
import { module as postsModule } from "./posts/module";
import { module as tagsModule } from "./tags/module";
export const modules: readonly ModuleDef[] = [postsModule, tagsModule];

Para um projeto só com posts, use --modules posts. A saída de slash create é a mesma do padrão, que você vê em Modelos e rotas:

Projeto criado em <projeto>.
Próximos passos, dentro da pasta:
  bun run build  gera o site em dist/
  bun run start  sobe o painel em /painel/ e o site em /
[saída: 0]

Dentro da pasta do projeto, slash module list mostra o que está instalado e o que ainda pode entrar:

Instalados:
  posts  1.0.0  v1.1.0

Disponíveis:
  categorias         1.0.0  depende de: posts
  comentarios        1.0.0  depende de: posts
  metricas           1.0.0  depende de: posts
  newsletter         1.0.0  sem dependências
  paginas            1.0.0  sem dependências
  redirecionamentos  1.0.0  sem dependências
  seo                1.0.0  depende de: posts, paginas
  tags               1.0.0  depende de: posts
[saída: 0]

slash module add <id> instala o módulo e as dependências que faltam. Um módulo já instalado é recusado. O comando grava a instalação no slash.lock e avisa para reiniciar o servidor. Se você editou src/modules/index.ts à mão, o comando acrescenta o módulo quando reconhece o formato do arquivo. Quando não reconhece, ele recusa e não copia nada: acrescente o módulo ao arquivo você mesmo. As regras estão em slash module.

Instalado: tags 1.0.0.
Reinicie o servidor (bun run start) para o painel carregar o que entrou.
[saída: 0]

O projeto traz três scripts para rodar. Eles fazem coisas diferentes:

ComandoO que fazPainelDados
bun run devGera o site em dist/ e gera de novo quando src/ ou public/ mudam. Serve dist/ na porta PORT, ou na 4000.Nãocontent/snapshot.json
bun run buildGera o site em dist/, com o feed, o mapa do site e o robots.txt.Nãocontent/snapshot.json
bun run startSobe em modo de produção: o painel em /painel/ e o site em /.SimBanco SQLite em storage/

bun run dev mostra só o site. No computador, o painel só roda com bun run start e as seis variáveis de produção descritas abaixo. O PUBLIC_URL pode ser http://localhost:<porta>.

bun run start define NODE_ENV=production, serve o que está em dist/ e exige variáveis de ambiente. Antes do primeiro bun run start, rode bun run build: sem dist/, / não tem site. Sem as variáveis, o comando para e lista tudo que falta de uma vez:

  • PORT: a porta do painel, um número de 1 a 65535.
  • PUBLIC_URL: o endereço público, como https://seu-dominio.com.br. Sem caminho. http só para localhost.
  • PANEL_SECRET: pelo menos 32 caracteres. Gere com openssl rand -hex 32.
  • TRUST_PROXY: 1 atrás do Caddy, ou 0 sem proxy na frente.
  • RESEND_API_KEY e MAIL_FROM: a chave do Resend e o remetente, como Painel <painel@exemplo.com>.

HOST (padrão 127.0.0.1) e DATABASE_URL (padrão storage/db.sqlite) são opcionais. Em produção, o Caddy na frente recebe as conexões de fora.

O passo a passo completo de produção está em Implantar em VPS. Para criar o primeiro administrador, veja Primeiro administrador.

O projeto sai sem conteúdo. O content/snapshot.json traz listas vazias de artigos, autores, categorias, tags, séries e páginas. Por isso, a busca do site mostra Ainda não há artigos até o primeiro artigo ser publicado.

Crie os primeiros artigos no painel, como descrito em Lista e editor. Depois, publique em Publicação. Sem dist/ (build ou publicação), / não tem site.

Para entrar no painel pela primeira vez, veja Acesso.