如何设置Eleventy11ty以将工作正常的静态网站输出到_site文件夹?

问题描述

最近几年,我一直在使用Hexo.io生成我的静态网站。 当我运行“ hexo g”时,它将输出一个静态站点,无需服务器即可在本地打开。 这就是我想要11ty做的。

将网站转换为11ty后,当我使用本地开发服务器时,效果很好。 但是,当我打开_site> index.html时,它无法正确呈现。 缺少所有样式,js和图像,因为它们都以“ /”开头。

我觉得我缺少明显的东西。 必须有一种方法可以将11ty设置为输出正常工作的静态站点

我一直在研究11ty文档并在线查看是否有人遇到此问题。 通常,我看到人们想要部署到子目录或使用Netlify之类的东西。 我宁愿避免这种情况。

我尝试使用URL过滤器,该过滤器使用pathPrefix输出相对路径。 但是似乎没有pathPrefix可以删除“ /”。

任何建议将不胜感激。 谢谢。

解决方法

我不确定是否有简单的方法可以做到;我曾经在Jekyll论坛上问过同样的问题,但没人知道答案。

我认为困难在于文件夹结构,因为foo.com/bar在Eleventy中具有基础结构bar / index.htm(当您想要的离线站点是bar.htm时)。

当我对此进行调查时,Hexo似乎是唯一具有脱机功能的发电机。

,

确保您正确配置 11ty。然后还要记住,您需要为资产设置传递副本。

module.exports = function (eleventyConfig) {
    
    // NOTE: unlike in hugo,not the content of the assets folder,but the asset folder itself (with it's subfolders) will be copied...
    eleventyConfig.addPassthroughCopy("src/assets/**/!(*.scss)");

    eleventyConfig.addLayoutAlias('default','base.njk')

    eleventyConfig.setFrontMatterParsingOptions({ excerpt: true,excerpt_separator: '---' });

    return {

        passthroughFileCopy: true,dataTemplateEngine: 'njk',htmlTemplateEngine: "njk",markdownTemplateEngine: "njk",templateFormats: [
            "html","njk","ejs","md"
        ],dir: {
            input: "src",output: "_site",includes: "includes",layouts: "includes/layouts",data: "data",},pathPrefix: "/abc"
    };

}