ローカル ファイル システムから静的サイトの XML サイトマップを生成する CLI。
ローカル ファイル システムで.html
ファイルを検索することにより、XML または TXT サイトマップを生成する迅速かつ簡単な CLI。 noindex
メタを含むファイルを自動的に除外します。ノードモジュールとしても使用できます。
注:これは V2 ブランチです。古いバージョンをお探しの場合は、V1 ブランチを参照してください。 V2 には重大な変更が含まれています。リリース ページで変更内容を確認してください。
$ npm i -g static-sitemap-cli
$ sscli -b https://example.com -r public
これは、 **/*.html
に一致するファイルのpublic/
ディレクトリをトロールし、次に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
に設定されています。
オプションは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
ノード モジュールとしても使用できます。
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
変更はリリース ページに記録されます。