CLI для создания XML-карт сайта для статических сайтов из локальной файловой системы.
Быстрый и простой интерфейс командной строки для создания карт сайта XML или TXT путем поиска файлов .html
в локальной файловой системе. Автоматически исключать файлы, содержащие метаданные noindex
. Также может использоваться как модуль Node.
ПРИМЕЧАНИЕ. Это ветка V2. Если вы ищете более старую версию, см. ветку V1. V2 содержит критические изменения . Узнайте, что изменилось, на странице релизов.
$ npm i -g static-sitemap-cli
$ sscli -b https://example.com -r public
При этом каталог public/
просматривается в поисках файлов, соответствующих **/*.html
, затем анализируется каждый файл на наличие метатега noindex
robots (исключая этот файл, если тег существует) и, наконец, генерирует файлы sitemap.xml
и sitemap.txt
в файл public/
корень.
Дополнительные примеры использования см. ниже.
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
По умолчанию все соответствующие файлы .html
проходят через быстрый анализатор HTML, чтобы определить, установлен ли метатег noindex
— обычно в форме <meta name="robots" content="noindex" />
— и в этом случае этот файл исключен из созданной карты сайта. Чтобы отключить это поведение, передайте опцию --no-robots
.
Для повышения производительности чтение файлов передается в потоковом режиме порциями 1kb
, а анализ прекращается немедленно при обнаружении метаданных noindex
или закрывающего тега </head>
( <body>
не анализируется). Эта операция выполняется одновременно с ограничением асинхронного пула, равным 32. Это ограничение можно настроить с помощью параметра --concurrent
.
Скрывает расширение файла .html
в картах сайта следующим образом:
./rootDir/index.html -> https://example.com/
./rootDor/foo/index.html -> https://example.com/foo
./rootDor/foo/bar.html -> https://example.com/foo/bar
Включено по умолчанию; передайте опцию --no-clean
чтобы отключить.
Добавляет косую черту ко всем URL-адресам следующим образом:
./rootDir/index.html -> https://example.com/
./rootDir/foo/index.html -> https://example.com/foo/
./rootDir/foo/bar.html -> https://example.com/foo/bar/
По умолчанию отключено; передайте опцию --slash
чтобы включить.
ПРИМЕЧАНИЕ. Невозможно использовать вместе с --no-clean
. Кроме того, к корневым доменам всегда добавляются косые черты.
Флаги -m
и -i
допускают несколько записей. По умолчанию для них установлены значения ["**/*.html"]
и ["404.html"]
соответственно. Измените шаблоны glob в соответствии с вашим вариантом использования следующим образом:
$ sscli ... -m '**/*.{html,jpg,png}' -i '404.html' 'ignore/**' 'this/other/specific/file.html'
Флаги -c
и -p
допускают несколько записей и принимают пары glob-*
в качестве входных данных. Пара glob-*
— это пара значений <glob>,<value>
, разделенных запятыми. Например, пара glob-changefreq может выглядеть так:
$ sscli ... -c '**,weekly' 'events/**,daily'
Последние записи переопределяют первые. В приведенном выше примере пути, соответствующие events/**
имеют daily
частоту изменения, а остальные имеют значение weekly
.
Параметры можно передать через свойство sscli
в package.json
, через JSON-файл .ssclirc
или через другие стандартные соглашения.
$ 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
также можно использовать в качестве модуля 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 )
. . .
} )
Использование генератора карты сайта XML отдельно:
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 )
Применяется стандартный рабочий процесс внесения вклада в Github.
Спецификации тестов находятся в test/spec.js
. Чтобы запустить тесты:
$ npm run test
ISC
Изменения фиксируются на странице релизов.