|
|
- 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',
- // },
- // };
- };
|