Вы можете использовать эти пакеты (--save-dev
для всех):
Затем настройте Webpack, как показано ниже, где index.js
- фиктивный файл, который вы должны создать, если у вас еще нет записи. Каждый шаблон Pug, который нужно обработать, записан в отдельном HtmlWebpackPlugin
объекте внизу.
var HtmlWebpackPlugin = require('html-webpack-plugin');
var HtmlWebpackPugPlugin = require('html-webpack-pug-plugin');
module.exports = {
entry: ['./src/index.js'],
output: {
path: __dirname + '/dist',
publicPath: '/'
},
module: {
rules: [
{
test: /\.pug$/,
use: [
"raw-loader",
"pug-html-loader"
]
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: 'src/navcustom-template.pug',
filename: 'navcustom-template.html'
}),
new HtmlWebpackPlugin({
template: 'src/customfooter-template.pug',
filename: 'customfooter-template.html'
}),
new HtmlWebpackPugPlugin()
]
}
Все миксины Pug (ваши src/components
файлы) будут включены в вывод. Этот пример протестирован и работает.
Редактировать: Для динамической обработки всех файлов Pug в каталоге src
используйте эту конфигурацию:
const HtmlWebpackPlugin = require('html-webpack-plugin');
const HtmlWebpackPugPlugin = require('html-webpack-pug-plugin');
const fs = require('fs');
let templates = [];
let dir = 'src';
let files = fs.readdirSync(dir);
files.forEach(file => {
if (file.match(/\.pug$/)) {
let filename = file.substring(0, file.length - 4);
templates.push(
new HtmlWebpackPlugin({
template: dir + '/' + filename + '.pug',
filename: filename + '.html'
})
);
}
});
module.exports = {
entry: ['./src/index.js'],
output: {
path: __dirname + '/dist',
publicPath: '/'
},
module: {
rules: [
{
test: /\.pug$/,
use: [
"raw-loader",
"pug-html-loader"
]
}
]
},
plugins: [
...templates,
new HtmlWebpackPugPlugin()
]
}
Используется fs.readdirSync
для получения всех файлов Pug в каталоге. Используется синхронная версия (в отличие от fs.readdir
), потому что функция module.exports
вернется до обработки файлов.