Как правильно создать многостраничный сайт i18n с веб-пакетом? - PullRequest
0 голосов
/ 04 марта 2019

Задача

Создать несколько статических страниц для нескольких языков, используя одни и те же детали.Сделайте проект максимально простым и минимальным.

Стек

Веб-пакет с html-загрузчиком, HtmlWebpackPlugin и I18nPlugin.Ничего фантастического.На сегодня все в последних версиях.

Текущее решение

webpack.config.js:

const entryHtmlPlugins = (language) => pageList
    .map(function (entryName) {
        const langPart = language === defaultLanguage ? '' : `${language}.`;

        return new HtmlWebpackPlugin({
            filename: `../dist/${langPart}${entryName}`,
            template: `prerender/${entryName}`,
            language,
        });
    });

module.exports = Object.keys(languages).map((language) => ({
    ...
    module: {
        rules: [{
            test: /\.(html)$/,
                include: path.join(__dirname, 'src/pages'),
                use: {
                     loader: 'html-loader',
                     options: {
                         interpolate: true
                     }
                }
         },
    ...]
    },
    plugins: [
        ...
        new I18nPlugin(languages[language]),
    ].concat(entryHtmlPlugins(language))
}))

index.html

<!-- regular html with translations in format: -->
<%= __('Test') %>

Проблема

В шаблонах, импортированные с

<%= require('html-loader!./partial.html') %>

или

${require('!html-loader!./partial.html')}

переводы не работают.

Решения?

Обработка HTML-страниц с помощью плагинаиз временной папки (то есть каждая страница создается один раз для включения частичных и еще раз для перевода) работает, но вызывает бесконечное повторное рендеринг.И не чувствует себя хорошо.Задача выглядит так просто, и я вряд ли верю, что нет другого способа, кроме как использовать шаблонизатор.Интересно, это правильное направление для создания собственного плагина?Если текущий стек слишком скромен для моей цели, не могли бы вы предложить какие-либо другие варианты.

Вопрос

Так есть ли более или менее элегантный способ использовать партиалы и i18n одновременно или у меня есть для использования pug (или что-то) для шаблонов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...