CLI para gerar mapas de sites XML para sites estáticos do sistema de arquivos local.
CLI rápido e fácil para gerar mapas de sites XML ou TXT pesquisando arquivos .html
em seu sistema de arquivos local. Exclua automaticamente arquivos contendo o meta noindex
. Também pode ser usado como um módulo Node.
NOTA: Este é o ramo V2. Se você estiver procurando pela versão mais antiga, consulte o branch V1. V2 contém alterações significativas . Descubra o que mudou na página de lançamentos.
$ npm i -g static-sitemap-cli
$ sscli -b https://example.com -r public
Isso rastreia o diretório public/
em busca de arquivos correspondentes a **/*.html
, depois analisa cada arquivo para a meta tag noindex
robots - excluindo esse arquivo se a tag existir - e finalmente gera sitemap.xml
e sitemap.txt
no public/
raiz.
Veja abaixo mais exemplos de uso.
Usage: sscli [options]
CLI to generate XML sitemaps for static sites from local filesystem
Options:
-b, --base <url> base URL (required)
-r, --root <dir> root working directory (default: ".")
-m, --match <glob...> globs to match (default: ["**/*.html"])
-i, --ignore <glob...> globs to ignore (default: ["404.html"])
-c, --changefreq <glob,changefreq...> comma-separated glob-changefreq pairs
-p, --priority <glob,priority...> comma-separated glob-priority pairs
--no-robots do not parse html files for noindex meta
--concurrent <max> concurrent number of html parsing ops (default: 32)
--no-clean do not use clean URLs
--slash add trailing slash to all URLs
-f, --format <format> sitemap format (choices: "xml", "txt", "both", default: "both")
-o, --stdout output sitemap to stdout instead
-v, --verbose be more verbose
-V, --version output the version number
-h, --help display help for command
Por padrão, todos os arquivos .html
correspondentes são canalizados através de um analisador HTML rápido para detectar se a meta tag noindex
está definida - normalmente na forma de <meta name="robots" content="noindex" />
- nesse caso, esse arquivo é excluído do mapa do site gerado. Para desabilitar este comportamento, passe a opção --no-robots
.
Para melhor desempenho, as leituras de arquivos são transmitidas em blocos 1kb
e a análise é interrompida imediatamente quando o meta noindex
ou a tag de fechamento </head>
é detectada (o <body>
não é analisado). Esta operação é executada simultaneamente com um limite de pool assíncrono de 32. O limite pode ser ajustado usando a opção --concurrent
.
Oculta a extensão do arquivo .html
em mapas de sites da seguinte forma:
./rootDir/index.html -> https://example.com/
./rootDor/foo/index.html -> https://example.com/foo
./rootDor/foo/bar.html -> https://example.com/foo/bar
Habilitado por padrão; passe a opção --no-clean
para desabilitar.
Adiciona uma barra final a todos os URLs, assim:
./rootDir/index.html -> https://example.com/
./rootDir/foo/index.html -> https://example.com/foo/
./rootDir/foo/bar.html -> https://example.com/foo/bar/
Desativado por padrão; passe a opção --slash
para ativar.
NOTA: Não pode ser usado junto com --no-clean
. Além disso, barras finais são sempre adicionadas aos domínios raiz.
Os sinalizadores -m
e -i
permitem múltiplas entradas. Por padrão, eles são definidos como ["**/*.html"]
e ["404.html"]
respectivamente. Altere os padrões glob para se adequar ao seu caso de uso, assim:
$ sscli ... -m '**/*.{html,jpg,png}' -i '404.html' 'ignore/**' 'this/other/specific/file.html'
Os sinalizadores -c
e -p
permitem múltiplas entradas e aceitam pares glob-*
como entrada. Um par glob-*
é um par de <glob>,<value>
separado por vírgula. Por exemplo, um par glob-changefreq pode ter a seguinte aparência:
$ sscli ... -c '**,weekly' 'events/**,daily'
As últimas entradas substituem as anteriores. No exemplo acima, os caminhos que correspondem a events/**
têm um changefreq daily
, enquanto o restante é definido como weekly
.
As opções podem ser passadas por meio da propriedade sscli
em package.json
ou por meio de um arquivo JSON .ssclirc
ou por meio de outras convenções padrão.
$ sscli -b https://x.com -f txt -o
$ sscli -b https://x.com -r dist -f xml -o > www/sm.xml
$ sscli -b https://x.com/foo -r dist/foo -f xml -o > dist/sitemap.xml
$ sscli -b https://x.com -r dist -m '**/*.{jpg,jpeg,gif,png,bmp,webp,svg}' -f txt
static-sitemap-cli
também pode ser usado como um módulo Node.
import {
generateUrls ,
generateXmlSitemap ,
generateTxtSitemap
} from 'static-sitemap-cli'
const options = {
base : 'https://x.com' ,
root : 'path/to/root' ,
match : [ '**/*html' ] ,
ignore : [ '404.html' ] ,
changefreq : [ ] ,
priority : [ ] ,
robots : true ,
concurrent : 32 ,
clean : true ,
slash : false
}
generateUrls ( options ) . then ( ( urls ) => {
const xmlString = generateXmlSitemap ( urls )
const txtString = generateTxtSitemap ( urls )
. . .
} )
Usando o gerador de sitemap XML sozinho:
import { generateXmlSitemap } from 'static-sitemap-cli'
const urls = [
{ loc : 'https://x.com/' , lastmod : '2022-02-22' } ,
{ loc : 'https://x.com/about' , lastmod : '2022-02-22' } ,
...
]
const xml = generateXmlSitemap ( urls )
O fluxo de trabalho de contribuição padrão do Github se aplica.
As especificações de teste estão em test/spec.js
. Para executar os testes:
$ npm run test
ISC
As alterações são registradas na página de lançamentos.