blob: 97712f2e16797aea16b99f0bc8e617a3a08d72f1 [file] [log] [blame]
const cheerio = require('gulp-cheerio');
const env = process.env.CAMEL_ENV || 'development';
const gulp = require('gulp');
const htmlmin = require('gulp-htmlmin');
/**
* We minify all HTML files using htmlmin, this is to make them smaller in size
* as we generate quite big HTML files in the documentation. We do not do this
* unless the environment variable `CAMEL_ENV` is set to 'production' to help
* with the development turnaround as this takes quite a while to do.
*/
gulp.task('minify', (done) => {
if (env !== 'production') {
done();
return;
}
return gulp.src('public/**/*.html')
.pipe(htmlmin({
collapseBooleanAttributes: true,
collapseWhitespace: true,
collapseInlineTagWhitespace: true,
conservativeCollapse: true,
useShortDoctype: true,
processScripts: ['application/ld+json']
}))
.pipe(gulp.dest('public'));
});
/*
* Appends `sitemap-website.xml` to the `sitemap.xml`.
*
* We have sitemaps generated by Antora for each documentation component, these
* are generated in `documentation/sitemap-*.xml` along with the
* `documentation/sitemap.xml` that is a sitemap index pointing to each
* component sitemap.
*
* Hugo also generates a sitemap in `public/sitemap-website.xml` containing all
* pages generated from `content/` and other sources. We need to add the
* `sitemap-website.xml` to the `sitemap.xml` so that we have a sitemap index
* containing pointers to all individual sitemaps.
*
* Sitemaps are used by search engines (Google, Algolia, ...) to help them crawl
* and index the website.
*/
gulp.task('sitemap', (done) => {
return gulp.src('public/sitemap.xml')
.pipe(cheerio(($, f) =>
$('sitemapindex').append(`<sitemap>
<loc>https://camel.apache.org/sitemap-website.xml</loc>
</sitemap>`)
))
.pipe(gulp.dest('public'));
});
/*
* Removes the content from the `public` directory.
*/
gulp.task('clean', () => {
return require('del')('public');
});