CLI zum Generieren von XML-Sitemaps für statische Sites aus dem lokalen Dateisystem.
Schnelle und einfache CLI zum Generieren von XML- oder TXT-Sitemaps, indem Sie Ihr lokales Dateisystem nach .html
Dateien durchsuchen. Dateien, die das noindex
-Meta enthalten, automatisch ausschließen. Kann auch als Node-Modul verwendet werden.
HINWEIS: Dies ist der V2-Zweig. Wenn Sie nach der älteren Version suchen, sehen Sie sich den V1-Zweig an. V2 enthält wichtige Änderungen . Was sich geändert hat, erfahren Sie auf der Release-Seite.
$ npm i -g static-sitemap-cli
$ sscli -b https://example.com -r public
Dadurch wird das public/
-Verzeichnis nach Dateien durchsucht, die mit **/*.html
übereinstimmen, dann wird jede Datei auf das noindex
-Robots-Meta-Tag analysiert – mit Ausnahme dieser Datei, wenn das Tag vorhanden ist – und schließlich werden sowohl sitemap.xml
als auch sitemap.txt
im public/
generiert. Wurzel.
Weitere Anwendungsbeispiele finden Sie weiter unten.
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
Standardmäßig werden alle übereinstimmenden .html
Dateien durch einen schnellen HTML-Parser geleitet, um zu erkennen, ob das noindex
Meta-Tag gesetzt ist – typischerweise in der Form <meta name="robots" content="noindex" />
– in welchem Fall diese Datei wird von der generierten Sitemap ausgeschlossen. Um dieses Verhalten zu deaktivieren, übergeben Sie die Option --no-robots
.
Für eine bessere Leistung werden Dateilesevorgänge in 1kb
-Blöcken gestreamt und die Analyse stoppt sofort, wenn entweder das noindex
-Meta oder das schließende Tag </head>
erkannt wird (der <body>
wird nicht analysiert). Dieser Vorgang wird gleichzeitig mit einem Async-Pool-Limit von 32 ausgeführt. Das Limit kann mit der Option --concurrent
angepasst werden.
Versteckt die Dateierweiterung .html
in Sitemaps wie folgt:
./rootDir/index.html -> https://example.com/
./rootDor/foo/index.html -> https://example.com/foo
./rootDor/foo/bar.html -> https://example.com/foo/bar
Standardmäßig aktiviert; Übergeben Sie die Option --no-clean
um sie zu deaktivieren.
Fügt allen URLs einen abschließenden Schrägstrich hinzu, etwa so:
./rootDir/index.html -> https://example.com/
./rootDir/foo/index.html -> https://example.com/foo/
./rootDir/foo/bar.html -> https://example.com/foo/bar/
Standardmäßig deaktiviert; Übergeben Sie die Option --slash
um sie zu aktivieren.
HINWEIS: Kann nicht zusammen mit --no-clean
verwendet werden. Außerdem werden Stammdomänen immer abschließende Schrägstriche hinzugefügt.
Die Flags -m
und -i
erlauben mehrere Einträge. Standardmäßig sind sie auf ["**/*.html"]
bzw. ["404.html"]
eingestellt. Ändern Sie die Glob-Muster entsprechend Ihrem Anwendungsfall wie folgt:
$ sscli ... -m '**/*.{html,jpg,png}' -i '404.html' 'ignore/**' 'this/other/specific/file.html'
Die Flags -c
und -p
erlauben mehrere Einträge und akzeptieren glob-*
Paare als Eingabe. Ein glob-*
Paar ist ein durch Kommas getrenntes Paar aus <glob>,<value>
. Ein Glob-Changefreq-Paar könnte beispielsweise so aussehen:
$ sscli ... -c '**,weekly' 'events/**,daily'
Letztere Einträge überschreiben die ersteren. Im obigen Beispiel haben Pfade, die mit events/**
übereinstimmen, eine daily
Änderungsfrequenz, während der Rest auf weekly
eingestellt ist.
Optionen können über die sscli
Eigenschaft in package.json
oder über eine .ssclirc
JSON-Datei oder über andere Standardkonventionen übergeben werden.
$ 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
kann auch als Node-Modul verwendet werden.
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 )
. . .
} )
Den XML-Sitemap-Generator allein verwenden:
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 )
Es gilt der Standard-Beitragsworkflow von Github.
Testspezifikationen finden Sie unter test/spec.js
. So führen Sie die Tests aus:
$ npm run test
ISC
Änderungen werden auf der Release-Seite protokolliert.