CLI 用于从本地文件系统为静态站点生成 XML 站点地图。
通过在本地文件系统中搜索.html
文件,快速简便的 CLI 可以生成 XML 或 TXT 站点地图。自动排除包含noindex
元的文件。也可以用作节点模块。
注意:这是 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
changefreq,而其余的则设置为weekly
。
选项可以通过package.json
中的sscli
属性、 .ssclirc
JSON 文件或其他标准约定传递。
$ 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
国际标准委员会
更改记录在发布页面中。