O que knap faz?
Use a CLI Knap para renderizar modelos Markdown com variáveis, filtros e lógica.
Se não estiver instalado: npm install -g knap (requer Node.js 20 ou superior). Alternativamente, use npx knap.
Execute knap --help para comandos e opções disponíveis. Descubra a linguagem através da referência offline da CLI:
knap help syntax
knap help filters
knap help filter date
knap help tags
knap help tag for
Use as listas para encontrar nomes e então solicite ajuda individual para sintaxe, parâmetros e exemplos com saída esperada.
Uso
Renderize um modelo com variáveis JSON:
knap render template.md --data article.json -o note.md
Forneça um modelo e dados inline:
knap render -t '# {{ title | trim }}' --data-json '{"title":"Hello"}'
Substitua uma variável ou pipe dados JSON:
knap render template.md --data article.json --set 'title=Custom title'
cat article.json | knap render template.md --data -
Os dados devem ser um objeto JSON; suas propriedades se tornam variáveis do modelo. --set substitui chaves literais de nível superior por strings. Use JSON para objetos aninhados, arrays, números e booleanos.
Escolha uma fonte de modelo (arquivo, -t ou stdin) e uma fonte de dados (--data ou --data-json). Apenas uma entrada pode ler do stdin. Sem um arquivo de modelo ou -t, o Knap lê o modelo do stdin.
A saída padrão é stdout. -o cria diretórios pai e sobrescreve o destino após a renderização bem-sucedida. Erros saem com status 1; diagnósticos vão para stderr. Avisos podem acompanhar saída bem-sucedida.
Modelos
Use {{ variavel }} para valores, | para filtros e {% ... %} para lógica. Por exemplo, salve isso como template.md:
---
{{ title | yaml_property:"title" }}
{{ tags | yaml_property:"tags" }}
---
# {{ title | trim }}
{% if author %}
Por {{ author }}
{% endif %}
{{ content }}
Use yaml_property para propriedades completas de frontmatter para que os valores sejam citados e indentados corretamente. A CLI inclui filtros padrão, mas não fornece variáveis de navegador do Web Clipper, seletores, prompts ou filtros HTML dependentes de DOM. Forneça variáveis através de JSON.
Verifique um modelo antes de renderizar:
knap validate template.md
A validação verifica sintaxe, nomes de filtros e argumentos de filtro estáticos sem dados ou saída de arquivo. Ela não verifica existência de variáveis, valores em tempo de execução ou argumentos dinâmicos; renderize com dados reais para verificar o comportamento em tempo de execução. Diagnósticos vão para stderr e incluem comandos de ajuda relevantes.
Pipeline Defuddle
Extraia uma página da web como JSON com conteúdo Markdown e depois renderize em uma nota:
defuddle parse https://example.com/article --md --json \
| knap render template.md --data - -o note.md
As propriedades JSON do Defuddle, como title e content, tornam-se diretamente variáveis do modelo.
Renderização em lote
Crie um arquivo por linha de CSV, objeto de array JSON ou arquivo JSON em uma pasta:
knap batch template.md --data articles.csv --output-dir notes \
--filename '{{ title | safe_name }}.md'
Use --data articles.json para um array ou --data ./articles para uma pasta de objetos JSON. Cabeçalhos de CSV se tornam nomes de variáveis e valores permanecem como strings. Dados via pipe padrão são JSON; adicione --format csv para CSV via pipe.
Use --dry-run para validar e listar caminhos de saída sem escrever arquivos. Arquivos existentes requerem --overwrite, inclusive durante uma execução de teste. Nomes de saída duplicados dentro de um lote são erros mesmo com --overwrite.
Modelos de nome de arquivo devem produzir um único nome de arquivo com sua extensão, sem diretórios. Use safe_name para nomes derivados de dados. Sem --filename, o Knap preserva os nomes base de JSON de origem ou numera linhas de CSV e itens de array como 1.md, 2.md e assim por diante.