slash module
slash module lista os módulos de um projeto blog e instala módulos oficiais nele. Esta página é a referência do comando: o que ele lê, o que grava e o que recusa. Para o uso no dia a dia, veja Módulos e execução. Os módulos e o que cada um faz estão em Módulos oficiais.
Subcomandos
Seção intitulada “Subcomandos”slash module tem dois subcomandos: list e add. Cada um aceita --dir <pasta>; sem ele, usa a pasta atual. Outro subcomando é recusado, e o comando não remove módulos.
uso: slash module list [--dir <pasta>]
uso: slash module add <id> [--dir <pasta>]
[saída: 0]
slash module list
Seção intitulada “slash module list”O comando lê o slash.lock da pasta e mostra duas listas:
- Instalados: o id, a versão e a tag do slash-kit de onde a cópia veio. Os dados vêm do
slash.lock. - Disponíveis: os módulos do catálogo desta versão que ainda não estão no
slash.lock, com as dependências de cada um. Quando não há dependência, a linha dizsem dependências.
Quando uma lista está vazia, a linha mostra nenhum.
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]
Fora de um projeto blog, não há slash.lock. O comando para com a mensagem abaixo e código de saída 1.
Esta pasta não é um projeto blog do slash: slash.lock não encontrado em <pasta>. Rode o comando dentro de um projeto criado com "slash create <pasta> --template blog" ou use --dir <pasta>.
[saída: 1]
slash module add
Seção intitulada “slash module add”slash module add <id> copia o módulo e as dependências que o projeto ainda não tem. Dependências entram antes dos módulos que as pedem. Por exemplo, slash module add seo num projeto que só tem posts copia paginas e depois seo.
Antes de copiar qualquer arquivo, o comando confere, nesta ordem:
- Lock conhecido. Se o
slash.locklista um módulo que o catálogo desta versão não conhece, o comando recusa comO slash.lock lista o módulo <id>, que esta versão do slash não conhece…e não copia nada. - Id no catálogo. Um id fora do catálogo é recusado com
módulo desconhecido: <id> (disponíveis: …). - Ainda não instalado. Um módulo já listado no
slash.locké recusado comO módulo <id> já está instalado (versão <versão>). - Núcleo. O comando lê
CORE_VERSIONemsrc/server.tse confere a faixacorede cada módulo a copiar, dependências incluídas. Os nove módulos oficiais pedem^1.0.0, ou seja, de 1.0.0 até antes de 2.0.0. Um núcleo fora da faixa é recusado comO módulo <id> exige o núcleo do painel <faixa>, mas este projeto tem <versão>…. SemCORE_VERSIONlegível, o comando para comNão foi possível ler CORE_VERSION em src/server.ts…. - Índice.
src/modules/index.tsprecisa existir: sem ele, o comando recusa comsrc/modules/index.ts não existe…e não copia nada. Se ele é o gerado peloslash create, o comando escreve de novo. Se você o editou à mão, o comando acrescenta oimportdepois do últimoimporte o módulo no fim da lista. Quando não reconhece o formato, ele recusa comsrc/modules/index.ts foi editado à mão…. Ele recusa quando a lista de módulos não é única, quando há comentário dentro dela, quando a lista vem antes dosimport, ou quando o módulo já aparece no arquivo. - Checkout limpo. Se houver mudanças não commitadas em
modules/do checkout do slash-kit de onde o comando roda, inclusive arquivos novos ainda não rastreados, o comando recusa com a lista delas e não copia nada.
Só então o comando copia modules/<id> desse checkout para src/modules/<id>. Se a pasta já existir no projeto, a cópia é recusada. A instalação é tudo ou nada: as pastas são copiadas primeiro para uma pasta temporária e movidas para o lugar. Se alguma etapa falha, as pastas movidas são removidas e o índice volta ao que era.
Ao fim, o comando grava os módulos novos no slash.lock, com a tag mais recente do checkout, o commit e a versão de cada um, e mostra a mensagem de instalação.
Instalado: tags 1.0.0.
Reinicie o servidor (bun run start) para o painel carregar o que entrou.
[saída: 0]
O índice que o comando gera, ou que ele acrescenta quando você o editou à mão, tem esta forma. O exemplo mostra posts e tags:
// 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];Limites da versão 1.1.0
Seção intitulada “Limites da versão 1.1.0”slash module addsó instala os módulos do catálogo oficial. Um módulo próprio entra na pastasrc/modules/à mão, com a entrada no índice.- O comando só lista e adiciona. Para ligar, desligar e configurar um módulo já instalado, use a tela Módulos do painel, descrita em Módulos.
Ver também
Seção intitulada “Ver também”- Módulos oficiais: o que cada módulo guarda e quais permissões ele usa.
- CLI: todos os comandos e as opções de
--dir.