ngx-sitemap
Version:
CLI to create a sitemap for Angular Universal Applications with prerendered pages
87 lines (73 loc) • 2.55 kB
Markdown
# Angular Universal Sitemap Generator
This package contains a CLI which is able to create a sitemap.xml file at build time.
The CLI only works in combination with [Angular SSR](https://angular.io/guide/universal) and [Prerendering](https://angular.io/guide/prerendering). The routes from the prerendered pages are being used to generate the sitemap. This package can be used in CI/CD as it does not crawl a running website.
## Installation
```
npm install ngx-sitemap --save-dev
```
## Usage
In order to work you must first prerender all routes to be included in the ``sitemap.xml``.
Then, use it from the command line as follows:
```
ngx-sitemap <srcDirectory> <baseUrl>
```
Example:
```
ngx-sitemap ./dist/prod/browser htts://www.example.com
```
This will generate a ``sitemap.xml`` in the srcDirectory given.
## How it works
[Prerendering](https://angular.io/guide/prerendering) will generate a static website with prerendered pages in the dist folder in a format like this:
```
dist
└── prod
├── browser
│ ├── route1
│ │ └── index.html
│ ├── route2
│ │ ├── route3
│ │ │ └── index.html
│ │ ├── route4
│ │ │ └── index.html
│ │ └── index.html
│ ├── index.html
│ ├── main.js
│ ├── runtime.js
│ └── ...
└── server
└── ...
```
The Command expects the ``srcDirectory`` which in this case would be ``./dist/prod/browser``. It then lists all routes which end with ``index.html`` resulting in the following:
```
[
'/'
'route1',
'route2',
'route2/route3',
'route2/route4',
]
```
Once all routes are found they get written into the ``sitemap.xml`` as follows:
```
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.example.com</loc>
</url>
<url>
<loc>https://www.example.com/route1</loc>
</url>
<url>
<loc>https://www.example.com/route2</loc>
</url>
<url>
<loc>https://www.example.com/route2/route3</loc>
</url>
<url>
<loc>https://www.example.com/route2/route4</loc>
</url>
</urlset>
```
Once deployed, the sitemap is available under ```https://www.example.com/sitemap.xml```.
## License
[MIT](https://spdx.org/licenses/MIT.html)