一覧へ戻る
aminnairi/rollup-plugin-sitemap(新しいタブで開きます)
主要言語: TypeScript
Sitemap generator
- star 数
- 0
- watcher 数
- 1
- fork 数
- 1
- issue 数
- 1
- 最終更新
- 2026/03/13
主要言語: TypeScript
Sitemap generator
Sitemap generator
npm install rollup @aminnairi/rollup-plugin-sitemap touch rollup.config.js
import { defineConfig } from "rollup" import { sitemap } from "@aminnairi/rollup-plugin-sitemap" export default defineConfig({ input: "index.js", plugins: [ sitemap({ baseUrl: "https://domain.com", urls: [ { location: "/" }, { location: "/about" } { location: "/contact" } ] }) ], output: { file: "build/index.js", format: "esm" } })
cat build/sitemap.xml <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://domain.com/</loc> </url> <url> <loc>https://domain.com/about</loc> </url> <url> <loc>https://domain.com/contact</loc> </url> </urlset>
import { defineConfig } from "rollup" import { sitemap } from "@aminnairi/rollup-plugin-sitemap" export default defineConfig({ input: "index.js", plugins: [ sitemap({ baseUrl: "https://domain.com", urls: [ { location: "/", lastModified: new Date() }, { location: "/about", lastModified: new Date() } { location: "/contact", lastModified: new Date() } ] }) ], output: { file: "build/index.js", format: "esm" } })
cat build/sitemap.xml <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://domain.com/</loc> <lastmod>2022-09-09</lastmod> </url> <url> <loc>https://domain.com/about</loc> <lastmod>2022-09-09</lastmod> </url> <url> <loc>https://domain.com/contact</loc> <lastmod>2022-09-09</lastmod> </url> </urlset>
import { defineConfig } from "rollup" import { sitemap } from "@aminnairi/rollup-plugin-sitemap" export default defineConfig({ input: "index.js", plugins: [ sitemap({ baseUrl: "https://domain.com", urls: [ { location: "/", changeFrequency: "monthly" }, { location: "/about", changeFrequency: "monthly" } { location: "/contact", changeFrequency: "monthly" } ] }) ], output: { file: "build/index.js", format: "esm" } })
cat build/sitemap.xml <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://domain.com/</loc> <changefreq>monthly</changefreq> </url> <url> <loc>https://domain.com/about</loc> <changefreq>monthly</changefreq> </url> <url> <loc>https://domain.com/contact</loc> <changefreq>monthly</changefreq> </url> </urlset>
import { defineConfig } from "rollup" import { sitemap } from "@aminnairi/rollup-plugin-sitemap" export default defineConfig({ input: "index.js", plugins: [ sitemap({ baseUrl: "https://domain.com", urls: [ { location: "/", priority: 1 }, { location: "/about", priority: 1 } { location: "/contact", priority: 1 } ] }) ], output: { file: "build/index.js", format: "esm" } })
cat build/sitemap.xml <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://domain.com/</loc> <priority>1</priority> </url> <url> <loc>https://domain.com/about</loc> <priority>1</priority> </url> <url> <loc>https://domain.com/contact</loc> <priority>1</priority> </url> </urlset>
By default, the sitemap is generated at sitemap.xml. You can customize this by using the path option:
import { defineConfig } from "rollup"; import { sitemap } from "@aminnairi/rollup-plugin-sitemap"; export default defineConfig({ input: "index.js", plugins: [ sitemap({ baseUrl: "https://domain.com", path: "subcategory.sitemap.xml", urls: [{ location: "/" }], }), ], output: { file: "build/index.js", format: "esm", }, });
cat build/subcategory.sitemap.xml <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://domain.com/</loc> </url> </urlset>
You can also generate a robots.txt file alongside your sitemap using the robots option:
import { defineConfig } from "rollup"; import { sitemap } from "@aminnairi/rollup-plugin-sitemap"; export default defineConfig({ input: "index.js", plugins: [ sitemap({ baseUrl: "https://domain.com", urls: [{ location: "/" }], robots: { sitemap: true, }, }), ], output: { file: "build/index.js", format: "esm", }, });
cat build/robots.txt Sitemap: https://domain.com/sitemap.xml
You can add custom rules to the robots.txt file:
import { defineConfig } from "rollup"; import { sitemap } from "@aminnairi/rollup-plugin-sitemap"; export default defineConfig({ input: "index.js", plugins: [ sitemap({ baseUrl: "https://domain.com", urls: [{ location: "/" }], robots: { sitemap: true, rules: [ { description: "Block GPT Bot from indexing", userAgent: "GPTBot", disallow: "/", }, { description: "Allow Google Bot to index everything", userAgent: "Googlebot", allow: "/", }, ], }, }), ], output: { file: "build/index.js", format: "esm", }, });
cat build/robots.txt Sitemap: https://domain.com/sitemap.xml # Block GPT Bot from indexing User-Agent: GPTBot Disallow: / # Allow Google Bot to index everything User-Agent: Googlebot Allow: /
This package exports TypeScript types for advanced configuration:
import { defineConfig } from "rollup"; import { sitemap, type ChangeFrequency, type Priority, type Url, type Robots, type RobotsRule, } from "@aminnairi/rollup-plugin-sitemap"; const changeFrequency: ChangeFrequency = "monthly"; const priority: Priority = 0.8; const url: Url = { location: "/", lastModified: new Date(), changeFrequency, priority, }; const robotsRule: RobotsRule = { description: "Block GPT Bot", userAgent: "GPTBot", disallow: "/", }; const robots: Robots = { sitemap: true, rules: [robotsRule], }; export default defineConfig({ input: "index.js", plugins: [ sitemap({ baseUrl: "https://domain.com", urls: [url], robots, }), ], output: { file: "build/index.js", format: "esm", }, });
The ChangeFrequency type represents how often a page is likely to change. Possible values:
"always" - For pages that change every time they are accessed"hourly" - For pages that change at least once an hour"daily" - For pages that change at least once a day"weekly" - For pages that change at least once a week"monthly" - For pages that change at least once a month"yearly" - For pages that change at least once a year"never" - For archived pages that will never change againThe Priority type represents the importance of a page relative to other pages on your site. Possible values:
0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1See CONTRIBUTING.md.
MIT License - see the LICENSE file for details.
development branch)production branch)test, test:watch, and test --coverage scriptsuserAgent optional in RobotsRule interfacerobots.txt now includes the sitemap filename (e.g., Sitemap: https://domain.com/sitemap.xml instead of Sitemap: https://domain.com).path option to customize the sitemap filename (e.g., subcategory.sitemap.xml)robots.txt generation support with custom rules including:
description - Comment describing the ruleuserAgent - Which robot the rule applies toallow - URL paths allowed to be indexeddisallow - URL paths disallowed from indexingChangeFrequency, Priority, Url, Robots, RobotsRule)lint script for TypeScript type checkinglocation, lastModified, changeFrequency, and priority optionsrobots.txt generation with sitemap URL