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>
)時,解析會立即停止。此操作是在非--concurrent
池限制為 32 的情況下並發執行的。
在網站地圖中隱藏.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
國際標準委員會
更改記錄在發布頁面中。