203 lines
4.4 KiB
Markdown
203 lines
4.4 KiB
Markdown
# vite-plugin-sitemap
|
|
|
|
[](https://www.npmjs.com/package/vite-plugin-sitemap)
|
|
[](https://www.npmjs.com/package/vite-plugin-sitemap)
|
|
[](https://github.com/jbaubree/vite-plugin-sitemap/blob/main/src/types.ts)
|
|
[](https://github.com/jbaubree/vite-plugin-sitemap/blob/main/LICENSE)
|
|
[](https://github.com/jbaubree/vite-plugin-sitemap/actions/workflows/ci.yml)
|
|
|
|
> Sitemap generator plugin for Vite using [sitemap-ts](https://github.com/jbaubree/sitemap-ts).
|
|
|
|
> This plugin scans your dist folder next build to generate sitemap.xml and robots.txt files.
|
|
|
|
## Getting Started
|
|
|
|
### Vue
|
|
|
|
Install:
|
|
|
|
```bash
|
|
npm install -D vite-plugin-sitemap
|
|
```
|
|
|
|
### Vite config
|
|
|
|
Add to your `vite.config.js`:
|
|
|
|
```js
|
|
import Sitemap from 'vite-plugin-sitemap'
|
|
|
|
export default {
|
|
plugins: [
|
|
Vue(),
|
|
Sitemap({ hostname: 'https://example.com' }),
|
|
],
|
|
}
|
|
```
|
|
|
|
Now, run `npm build` and this will generate sitemap.xml and robots.txt files on your dist folder.
|
|
|
|
### To generate all pages of your app, you can:
|
|
|
|
- Use dynamicRoutes to send routes paths.
|
|
- Read [`MPA docs`](https://vitejs.dev/guide/build.html#multi-page-app) from Vite documentation.
|
|
- Use MPA with [`vite-plugin-mpa`](https://github.com/IndexXuan/vite-plugin-mpa).
|
|
|
|
## Configuration options
|
|
|
|
### hostname
|
|
|
|
- **Type:** `string`
|
|
- **Default:** `'http://localhost/'`
|
|
|
|
Base URI.
|
|
|
|
### dynamicRoutes
|
|
|
|
- **Type:** `string[]`
|
|
- **Default:** `[]`
|
|
|
|
Array of strings with manual dynamic routes.
|
|
|
|
```js
|
|
const names = [
|
|
'John',
|
|
'Bryce',
|
|
'Addison',
|
|
'Dana',
|
|
]
|
|
const dynamicRoutes = names.map(name => `/names/${name}`)
|
|
|
|
export default {
|
|
plugins: [
|
|
Vue(),
|
|
Sitemap({ dynamicRoutes }),
|
|
],
|
|
}
|
|
```
|
|
|
|
You can find a working example in example folder.
|
|
|
|
### exclude
|
|
|
|
- **Type:** `string[]`
|
|
- **Default:** `[]`
|
|
|
|
Array of strings with excluded routes.
|
|
|
|
```js
|
|
export default {
|
|
plugins: [
|
|
Vue(),
|
|
Sitemap({ exclude: ['/admin', '/private'] }),
|
|
],
|
|
}
|
|
```
|
|
|
|
You can find a working example in example folder.
|
|
|
|
### externalSitemaps
|
|
|
|
- **Type:** `string[]`
|
|
- **Default:** `[]`
|
|
|
|
Array of strings with other sitemaps paths or urls.
|
|
|
|
```js
|
|
generateSitemap({
|
|
externalSitemaps: ['sitemap_1', 'sitemap_2', 'subpath/sitemap_3', 'https://site.com/sitemap.xml']
|
|
})
|
|
```
|
|
|
|
### outDir
|
|
|
|
- **Type:** `string`
|
|
- **Default:** `'dist'`
|
|
|
|
Output directory.
|
|
|
|
### extensions
|
|
|
|
- **Type:** `string | string[]`
|
|
- **Default:** `'html'`
|
|
|
|
File extensions that need to be generated.
|
|
Example: ['html', 'md']
|
|
|
|
### changefreq
|
|
|
|
- **Type:** `string | RoutesOptionMap<string>`
|
|
- **Default:** `'daily'`
|
|
|
|
Change frequency option for sitemap.
|
|
|
|
### priority
|
|
|
|
- **Type:** `number | RoutesOptionMap<number>`
|
|
- **Default:** `1`
|
|
|
|
Priority option for sitemap.
|
|
|
|
### lastmod
|
|
|
|
- **Type:** `Date | RoutesOptionMap<Date>`
|
|
- **Default:** `new Date()`
|
|
|
|
Last modification option for sitemap.
|
|
|
|
### RoutesOptionMap\<Type>
|
|
|
|
- **Type:** `{ [route: string]: Type }`
|
|
|
|
Used for changing `changefreq`, `priority`, or `lastmod` on a by-route level.
|
|
The (optional) route `'*'` is used as default.
|
|
|
|
### readable
|
|
|
|
- **Type:** `boolean`
|
|
- **Default:** `false`
|
|
|
|
Converts XML into a human readable format
|
|
|
|
### i18n
|
|
|
|
- **Type:** `{ defaultLanguage?: string, languages: string[], strategy?: 'suffix' | 'prefix' }`
|
|
- **Default:** `undefined, strategy: 'suffix'`
|
|
|
|
Add i18n support defining alternate links.
|
|
defaultLanguage will use this language with / and languages with /language.
|
|
strategy specifies if the language code is a suffix to the path or a prefix. 'suffix' is default. Example: http://localhost/mypage/en or http://localhost/en/mypage
|
|
|
|
### generateRobotsTxt
|
|
|
|
- **Type:** `boolean`
|
|
- **Default:** `true`
|
|
|
|
Enables robots.txt file generation
|
|
|
|
### xmlns
|
|
|
|
- **Type:** `NSArgs`
|
|
- **Default:** `undefined`
|
|
|
|
Trim the xml namespace
|
|
See https://www.npmjs.com/package/sitemap#options-you-can-pass
|
|
Type: https://github.com/ekalinin/sitemap.js/blob/0af656e6a4a7b1403c9b3af23603261bd9cf94d3/lib/sitemap-stream.ts#L20
|
|
|
|
### robots
|
|
|
|
- **Type:** `RobotOption[]`
|
|
- **Default:** `[{ userAgent: '*', allow: '/' }]`
|
|
|
|
RobotOption:
|
|
|
|
- **userAgent**: `string`
|
|
- **allow**?: `string | string[]`
|
|
- **disallow**?: `string | string[]`
|
|
- **crawlDelay**?: `number`
|
|
- **cleanParam**?: `string`
|
|
|
|
## License
|
|
|
|
MIT License © 2022 [jbaubree](https://github.com/jbaubree)
|