11import { DateTime } from "luxon" ;
22import striptags from "striptags" ;
3+ import Image from "@11ty/eleventy-img" ;
34
45export default function ( eleventyConfig ) {
56 eleventyConfig . addFilter ( "readableDate" , ( dateObj , format , zone ) => {
@@ -70,6 +71,8 @@ export default function(eleventyConfig) {
7071 extractExcerpt ( post )
7172 ) ;
7273
74+ eleventyConfig . addFilter ( "contentImgUrlShortcode" , contentImgUrlShortcode ) ;
75+
7376} ;
7477
7578// Taken from here => https://keepinguptodate.com/pages/2019/06/creating-blog-with-eleventy/
@@ -85,3 +88,19 @@ function extractExcerpt(article) {
8588
8689 return striptags ( content . slice ( 0 , content . indexOf ( "\n" ) ) ) ;
8790}
91+
92+ async function contentImgUrlShortcode ( src ) {
93+ // src might be small.png - taken from frontmatter
94+ const imageSrc = ( this . eleventy . directories . input . replace ( "./" , this . eleventy . env . root + "/" ) + this . page . filePathStem + "/../" + src ) . replace ( "//" , "/" ) ;
95+ let metadata = await Image ( imageSrc , {
96+ widths : [ 600 ] ,
97+ formats : [ "png" ] ,
98+ urlPath : this . page . url ,
99+ outputDir : `./_site/${ this . page . url } ` ,
100+ } ) ;
101+
102+ const data = metadata . png [ 0 ] ;
103+ // data.url might be /blog/hello-world/xfO_genLg4-600.jpeg
104+ // note the filename is a content hash-width combination
105+ return data . url ;
106+ }
0 commit comments