Escrever um Tema
Pra começar, nós te recomendamos usar nosso gerador como base para o seu primeiro tema:
$ npm init slidev-theme
Depois você pode modificar e brincar com o tema. Você também pode consultar os temas oficiais como exemplos.
Capacidade
Um tema pode contribuir nos seguintes pontos:
- Estilos globais
- Prover configurações padrão (fontes, esquema de cor, destacadores, etc.)
- Prover layouts customizados ou sobrepor um existentes
- Prover componentes customizados ou sobrepor existentes
- Estender as configurações do Windi CSS
- Configurar ferramentas como Monaco e Prism
Convenções
Temas são publicados no registro do npm, e eles devem seguir as seguintes convenções:
- Nome do pacote deve começar com
slidev-theme-
, por exemplo:slidev-theme-incrivel
- Adicione
slidev-theme
eslidev
no campokeywords
do seupackage.json
Configuração
Para configurar o ambiente de teste para o seu tema, você pode criar um arquivo example.md
com o seguinte frontmatter, para dizer ao Slidev que você está usando o diretório atual como um tema.
---
theme: ./
---
Opcionalmente, você também pode adicionar alguns scripts ao seu packages.json
// package.json
{
"scripts": {
"dev": "slidev example.md",
"build": "slidev build example.md",
"export": "slidev export example.md",
"screenshot": "slidev export example.md --format png"
}
}
Para publicar seu tema, simplesmente execute npm publish
e pronto. Não há nenhum processo de compilação necessário (o que significa que você pode publicar arquivos .vue
e .ts
diretamente, o Slidev é esperto o bastante para entendê-los).
Os pontos de contribuição do tema seguem as mesmas convenções das customizações locais, consulte a documentação das convenções de nome.
Configurações Padrão
Disponível desde a v0.19
Um tema pode prover configurações padrão por meio do package.json
.
// package.json
{
"slidev": {
"default": {
"aspectRatio": "16/9",
"canvasWidth": 980,
"fonts": {
"sans": "Robot",
"mono": "Fira Code"
}
}
}
}
Fontes serão automaticamente importadas do Google Fonts.
Aprenda mais sobre fontes e configurações do frontmatter.
Metadados do Tema
Esquema de Cores
Por padrão, o Slidev assume que os temas suportam tanto o modo claro quanto o escuro. Se você quiser que seu tema seja apresentado em apenas um esquema de cores, você vai precisar especificar isto explicitamente no package.json
:
// package.json
{
"name": "slidev-theme-meu-tema-legal",
"keywords": [
"slidev-theme",
"slidev"
],
"slidev": {
"colorSchema": "light" // ou "dark" ou "both"
}
}
Para acessar o modo escuro quando estiver criando os estilos do seu tema, você pode usar a especificação de modo escuro do CSS com a classe dark
:
/* css generalista aqui */
html:not(.dark) {
/* css para modo claro aqui */
}
html.dark {
/* css para modo escuro aqui */
}
O Slidev alterna a classe dark
no elemento html
da página para trocar o esquema de cores.
Destacador
As cores do destacador de sintaxe também são provenientes do tema. Nós suportamos tanto o Prism quanto o Shiki. Para mais informação consulte a documentação do destaque de sintaxe.
Você pode suportar um deles, ou os dois. Consulte os exemplos de configuração padrão de tema ./styles/prism.css
/ ./setup/shiki.ts
.
Além disso, lembre-se de especificar os destacadores suportados no seu package.json
:
// package.json
{
"slidev": {
"highlighter": "shiki" // ou "prism" ou "all"
}
}
Versão do Slidev
Se o tema estiver usando um recurso específico do Slidev que foi introduzido recentemente, você pode definir a versão mínima do Slidev necessária para ter o seu tema funcionando bem:
// package.json
{
"engines": {
"slidev": ">=0.19.3"
}
}
Se usuário estiverem usando versões mais antigas do Slidev, será gerado um erro.