.eleventy.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // .eleventy.js
  2. const Fuse = require('fuse.js')
  3. const fs = require('fs')
  4. module.exports = function (eleventyConfig) {
  5. eleventyConfig.addPassthroughCopy("js");
  6. eleventyConfig.addFilter('searchIndex', async function (collection) {
  7. const index = await Promise.all(collection.map(async item => ({
  8. title: item.data.title,
  9. content: await item.template.inputContent,
  10. url: item.url,
  11. })));
  12. const fuse = new Fuse(index, { keys: ['title', 'content'] });
  13. const data = fuse.getIndex()
  14. // fs.writeFileSync('_site/search-index.json', JSON.stringify(data.toJSON()))
  15. // console.log(JSON.stringify(data.toJSON()))
  16. fs.writeFileSync('_site/search-index.json', JSON.stringify(data.docs))
  17. // console.log((data.docs))
  18. return data.toJSON()
  19. });
  20. eleventyConfig.addCollection('searchIndex', async function (collection) {
  21. return await eleventyConfig.getFilter('searchIndex')(collection.getAll());
  22. });
  23. };
  24. // // .eleventy.js
  25. // const Fuse = require('fuse.js');
  26. // module.exports = function (eleventyConfig) {
  27. // eleventyConfig.addPassthroughCopy("js");
  28. // eleventyConfig.addFilter('searchIndex', function (collection) {
  29. // const index = collection.map(item => ({
  30. // title: item.data.title,
  31. // content: item.template.inputContent,
  32. // url: item.url,
  33. // }));
  34. // const fuse = new Fuse(index, { keys: ['title', 'content'] });
  35. // console.log(fuse)
  36. // return fuse.toJSON();
  37. // });
  38. // eleventyConfig.addCollection('searchIndex', function (collection) {
  39. // return eleventyConfig.getFilter('searchIndex')(collection.getAll());
  40. // });
  41. // };