Как я могу настроить Eleventy (11ty) для вывода рабочего статического сайта в папку _site?

Последние несколько лет я использую Hexo.io для создания своего статического сайта. Когда я запускаю "hexo g", он выводит статический сайт, который я могу открыть локально без сервера. Это то, что я хочу, чтобы 11ty сделал.

После преобразования моего сайта в 11ty он отлично работает, пока я использую локальный сервер разработки. Но когда я открываю _site > index.html, он не отображается должным образом. Все стили, js и изображения отсутствуют, потому что все они начинаются с символа "/".

Я чувствую, что упускаю что-то очевидное. Должен быть способ установить 11ty для вывода рабочего статического сайта.

Я изучал документацию 11ty и онлайн, чтобы узнать, есть ли у кого-нибудь еще эта проблема. В основном я вижу людей, которые хотят развернуть в подкаталог или использовать что-то вроде Netlify. Я бы предпочел этого избежать.

Я пробовал использовать URL-фильтр, который выводит относительные пути с помощью pathPrefix. Но, похоже, нет pathPrefix, который удаляет "/".

Любые предложения будут ценны. Спасибо.

2 ответа

Я не уверен, что есть простой способ сделать это; Однажды я задал тот же вопрос на форуме Jekyll, и никто не знал ответа.

Я думаю, что трудность заключается в структуре папок, поскольку foo.com/bar имеет базовую структуру bar/index.htm в Eleventy (когда для автономного сайта вам нужен 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"
    };

}
Другие вопросы по тегам