Как код HTML с Джейд и webpack с горячей перезагрузки

я новичок в webpack, пытаясь настроить простую конфигурацию для кода HTML / CSS с jade шаблоны PostCSS, hot reload и служить HTML через webpack-dev-server для ускорения кодирования опыта.

поэтому у меня будет несколько точек входа, некоторые jade файлы с включениями, CSS, img, шрифтами и другими активами.

любой webpack предложения конфиг? Спасибо.

я пробовал html-webpack-plugin, с конфигурацией как

new HtmlWebpackPlugin({
    filename:'page1.html',
    templateContent: function(templateParams, compilation) {
        var templateFile = path.join(__dirname, './src/page1.jade');
        compilation.fileDependencies.push(templateFile);
        return jade.compileFile(templateFile)();
    },
    inject: true,
})

это работает, но нет горячей перезагрузки для jade включает в себя, нет CSS/img / font активов..

потом я нашел indexhtml-webpack-plugin но, похоже, работает только с HTML-файлами, шаблоны не поддерживаются.

Edit1:

на данный момент, я закончил с этим webpack.config.js:

var path = require('path'),
    webpack = require('webpack'),
    HtmlWebpackPlugin = require('html-webpack-plugin'),
    node_modules_dir = path.resolve(__dirname, 'node_modules');

module.exports = {
    entry: {
        index: ['webpack/hot/dev-server', './index.js'],
        page2: ['webpack/hot/dev-server', './page2.js'],
        //vendors: ['react', 'jquery'],
    },
    output: {
        filename: '[name].js',
        path: path.resolve(__dirname, 'build'),
        publicPath: path.resolve(__dirname, '/'),
        libraryTarget: "umd"
    },
    plugins: [
        new webpack.NoErrorsPlugin(),
        //new webpack.optimize.CommonsChunkPlugin('vendors', 'vendors.js'),
        new webpack.dependencies.LabeledModulesPlugin(),
    ],
    module: {
        noParse: [
            new RegExp('^react$'),
            new RegExp('^jquery$'),
        ],
        loaders: [
            { test: /.js$/,    loader: "babel-loader", query: {optional: ["es7.classProperties"]}},
            { test: /.html$/,  loader: "html" },
            { test: /.jade$/,  loader: "jade" },
            { test: /.css$/,   loader: "style-loader!css-loader!postcss-loader" },
            { test: /.woff$/,  loader: 'url-loader?prefix=font/&limit=5000&minetype=application/font-woff'},
            { test: /.ttf$/,   loader: 'url-loader?prefix=font/'},
            { test: /.eot$/,   loader: 'url-loader?prefix=font/'},
            { test: /.svg$/,   loader: 'url-loader?prefix=font/'},
            { test: /.png$/,   loader: "url-loader?prefix=img/&mimetype=image/png"},
            { test: /.jpg$/,   loader: "url-loader?prefix=img/&mimetype=image/jpg"},
            { test: /.gif$/,   loader: "url-loader?prefix=img/&mimetype=image/gif"}
        ],
    },
    postcss: function() {
        return {
          defaults: [
            require('autoprefixer')
          ]
        }
    }
}

Object.keys(module.exports.entry).forEach(function(page){

    if(page!=='vendors'){
        module.exports.plugins.push( new HtmlWebpackPlugin({
            filename: page+'.html',
            chunks: [page]
        }) );
    }
})

An index.js точка входа выглядит так:

import index from './templates/index.jade';
require('./css/index.css');
if (typeof document !== 'undefined') {
  document.body.innerHTML = index();
}

это рабочая настройка для меня для разработки HTML / CSS на данный момент.

2 ответов


похоже html-webpack-плагин может принимать параметр шаблона, который может принимать явный загрузчик (как видно из их документации) или использовать настроенные загрузчики:

// webpack.config.js

var HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  module: {
    loaders: [
      {
        test: /\.jade$/,
        loader: 'jade'
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.jade'
    })
  ]
}

есть jade-html-загрузчик. Я собираюсь попробовать это устроить.

спасибоhttps://stackoverflow.com/a/32312078

Я тоже новичок в webpack, и я думаю, что Jade html loader-это более конкретный загрузчик, который делает то же самое, что и html-загрузчик, но только для jade.

изменить: Meh, html-webpack-плагин