You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

129 lines
3.8 KiB

const htmlmin = require('html-minifier');
const dateFns = require('date-fns');
const lazyImagesPlugin = require('eleventy-plugin-lazyimages');
const syntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight');
const i18n = require('eleventy-plugin-i18n');
const translations = require('./src/_data/i18n');
module.exports = function (eleventyConfig) {
// PLUGINS **************************************************************
eleventyConfig.addPlugin(syntaxHighlight);
// does not work with background images
eleventyConfig.addPlugin(lazyImagesPlugin, {
transformImgPath: (imgPath) => {
if (imgPath.startsWith('http://') || imgPath.startsWith('https://')) {
// Handle remote file
return imgPath;
} else {
return `./src/${imgPath}`;
}
},
});
eleventyConfig.addPlugin(i18n, {
translations,
fallbackLocales: {
'*': 'en-US',
},
});
eleventyConfig.setEjsOptions({
rmWhitespace: true,
context: {
dateFns,
},
});
eleventyConfig.setBrowserSyncConfig({
files: './_site/assets/styles/main.css',
});
// use this to redirect to en-US
// eleventyConfig.setBrowserSyncConfig({
// files: './_site/assets/styles/main.css',
// callbacks: {
// ready: function (err, bs) {
// bs.addMiddleware('*', (req, res) => {
// if (req.url === '/') {
// res.writeHead(302, {
// location: '/en-US/'
// });
// res.end();
// }
// });
// }
// }
// });
eleventyConfig.addPassthroughCopy('styles/fonts');
eleventyConfig.addPassthroughCopy('src/assets/images/**/*.png');
eleventyConfig.addPassthroughCopy('src/assets/images/**/*.svg');
eleventyConfig.addPassthroughCopy('src/assets/images/**/*.jpg');
eleventyConfig.addPassthroughCopy('node_modules/@glidejs/glide/dist');
eleventyConfig.addPassthroughCopy('node_modules/blueimp-md5/js');
eleventyConfig.addTransform('htmlmin', (content, outputPath) => {
if (outputPath.endsWith('.html')) {
const minified = htmlmin.minify(content, {
useShortDoctype: true,
removeComments: true,
collapseWhitespace: true,
minifyJS: true,
});
return minified;
}
return content;
});
// Import fast-glob package
const fg = require('fast-glob');
// Run search for images in /screenshots
const galleryThumbnails = fg.sync(['**/images/screenshots/*resized*', '!**/_site']);
const galleryImagesAll = fg.sync(['**/images/screenshots/*', '!**/_site']);
//Create collection of screenshots
eleventyConfig.addCollection('screenshotThumbnails', function (collection) {
return galleryThumbnails.map((url) => {
return url.replace('src/', '');
});
});
//Create collection of screenshots
eleventyConfig.addCollection('screenshotHires', function (collection) {
return galleryImagesAll
.filter((url) => !url.includes('resized'))
.map((url) => {
return url.replace('src/', '');
});
});
return {
passthroughFileCopy: true,
dir: { input: 'src', output: '_site', data: '_data' },
};
// return {
// templateFormats: ['md', 'njk', 'html', 'liquid'],
// // If your site lives in a different subdirectory, change this.
// // Leading or trailing slashes are all normalized away, so don’t worry about it.
// // If you don’t have a subdirectory, use "" or "/" (they do the same thing)
// // This is only used for URLs (it does not affect your file structure)
// pathPrefix: '/',
// markdownTemplateEngine: 'liquid',
// htmlTemplateEngine: 'njk',
// dataTemplateEngine: 'njk',
// passthroughFileCopy: true,
// dir: {
// input: '.',
// includes: '_includes',
// data: '_data',
// output: 'docs',
// },
// };
};