Ставим лоадер ejs-render-loader.
В своем webpack.config.js исправил:
...
for (var title in titles) {
pluginsOptions.push(
new HtmlWebpackPlugin({
title: titles[title],
template: `./${title}/${title}.ejs`, // здесь убираем "ejs-render!"
chunks: [title],
filename: `${title}.html`
})
);
};
...
{
test: /\.ejs$/,
use: ['ejs-render-loader'] // указываем лоадер, который поставили
},
...
Все, теперь шаблонизатор честно отрабатывает потраченное на него время.
home.ejs:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>TestTitle</title>
</head>
<body>
<%- include('logo', {class1: 'classContent1', class2: 'classContent2'}) %>
<hr>
<p>Custom content goes here.</p>
</body>
</html>
logo.ejs:
<div class="logo<%= class1 %><%= class2 %>">Logo goes here.</div>
Но такая шаблонизация не гибкая, и накладывает ограничения. Например такие, если в home.ejs не передашь параметр "class1", то поймаешь ошибку при компиляции, и условия в logo.ejs тебя не спасут.
Шаблонизаторов туча кучная, я задумку реализовал именно на ejs.
P. S. Изучив WebPack, для себя я сделал следующие выводы: webpack не накладывает ограничений, и можно прикрутить любую логику. Но мне нравится подход BEM - полный стек бэм идеально сочетается с моим подходом и представлением о фронтенд-разработке, поэтому не вижу смысла городить BEM на webpack.