CLI para generar mapas de sitio XML para sitios estáticos desde el sistema de archivos local.
CLI rápida y sencilla para generar mapas de sitio XML o TXT buscando archivos .html
en su sistema de archivos local. Excluir automáticamente archivos que contengan el noindex
. También se puede utilizar como módulo de nodo.
NOTA: Esta es la rama V2. Si busca la versión anterior, consulte la rama V1. V2 contiene cambios importantes . Descubra qué cambió en la página de lanzamientos.
$ npm i -g static-sitemap-cli
$ sscli -b https://example.com -r public
Esto rastrea el directorio public/
en busca de archivos que coincidan con **/*.html
, luego analiza cada archivo para la metaetiqueta de robots noindex
(excluyendo ese archivo si la etiqueta existe) y finalmente genera tanto sitemap.xml
como sitemap.txt
en el public/
raíz.
Consulte a continuación para obtener más ejemplos 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
De forma predeterminada, todos los archivos .html
coincidentes se canalizan a través de un analizador HTML rápido para detectar si la metaetiqueta noindex
está configurada, generalmente en el formato <meta name="robots" content="noindex" />
, en cuyo caso ese archivo está excluido del mapa del sitio generado. Para desactivar este comportamiento, pase la opción --no-robots
.
Para un mejor rendimiento, las lecturas de archivos se transmiten en fragmentos 1kb
y el análisis se detiene inmediatamente cuando se detecta el noindex
o la etiqueta de cierre </head>
(el <body>
no se analiza). Esta operación se realiza simultáneamente con un límite de grupo asíncrono de 32. El límite se puede modificar usando la opción --concurrent
.
Oculta la extensión de archivo .html
en mapas de sitio de esta manera:
./rootDir/index.html -> https://example.com/
./rootDor/foo/index.html -> https://example.com/foo
./rootDor/foo/bar.html -> https://example.com/foo/bar
Habilitado de forma predeterminada; pase la opción --no-clean
para desactivar.
Agrega una barra diagonal a todas las URL de esta manera:
./rootDir/index.html -> https://example.com/
./rootDir/foo/index.html -> https://example.com/foo/
./rootDir/foo/bar.html -> https://example.com/foo/bar/
Deshabilitado por defecto; pasar opción --slash
para habilitar.
NOTA: No se puede utilizar junto con --no-clean
. Además, siempre se agregan barras diagonales a los dominios raíz.
Los indicadores -m
y -i
permiten múltiples entradas. De forma predeterminada, están configurados en ["**/*.html"]
y ["404.html"]
respectivamente. Cambie los patrones globales para adaptarlos a su caso de uso de la siguiente manera:
$ sscli ... -m '**/*.{html,jpg,png}' -i '404.html' 'ignore/**' 'this/other/specific/file.html'
Los indicadores -c
y -p
permiten múltiples entradas y aceptan pares glob-*
como entrada. Un par glob-*
es un par de <glob>,<value>
separados por comas. Por ejemplo, un par glob-changefreq puede verse así:
$ sscli ... -c '**,weekly' 'events/**,daily'
Las últimas entradas anulan las primeras. En el ejemplo anterior, las rutas que coinciden con events/**
tienen una frecuencia de cambio daily
, mientras que el resto están configuradas en weekly
.
Las opciones se pueden pasar a través de la propiedad sscli
en package.json
, o mediante un archivo JSON .ssclirc
, o mediante otras convenciones estándar.
$ 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
también se puede utilizar como módulo de Nodo.
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 el generador de mapas de sitio XML por sí solo:
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 )
Se aplica el flujo de trabajo de contribución estándar de Github.
Las especificaciones de prueba se encuentran en test/spec.js
. Para ejecutar las pruebas:
$ npm run test
ISC
Los cambios se registran en la página de lanzamientos.