Задать вопрос
@steemy_web

Webpack react-hot-loader, компилить без перезагрузки?

Добрый день! Подскажите пожалуйста, что нужно еще сделать, что бы отображалось без перезагрузки страницы, когда делаю любое изменение файла react компонента или css идет перезагрузка каждый раз страницы.

webpack.config.js
const webpack = require('webpack');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const WebpackNotifierPlugin = require('webpack-notifier');

const config = {
   entry: [
      'react-hot-loader/patch',
      './_f/app.js'
   ],
    
   output: {
      path: __dirname + "/_p",
      filename: "st.js"
   },
    
   devServer: {
      contentBase: "./_p",
      historyApiFallback: true,
      inline: true,
      port: 2000
   },
    
   module: {
      rules: [
         {
            test: /\.(js)$/,
            exclude: /node_modules/,
            use: [
               {
                  loader: 'react-hot-loader/webpack'
               },
               {
                  loader: 'babel-loader',
                  options: {
                     presets: [
                        'es2015',
                        'react',
                     ]
                  },
               }
            ]
         },
         {
            test: /\.styl/,
            exclude: /node_modules/,
            use: ExtractTextPlugin.extract({
               fallback: 'style-loader',
               use: [
                  {
                     loader: 'css-loader',
                     options: {
                        sourceMap: true,
                        minimize: true
                     }
                  }, 'autoprefixer-loader?browsers=last 2 versions', 'stylus-loader']
            })
         }
      ]
   },

   plugins: [
      new ExtractTextPlugin('st.css'),
      new WebpackNotifierPlugin,
      new webpack.HotModuleReplacementPlugin()
   ],

   devtool: "cheap-inline-module-source-map",
}



if (process.env.NODE_ENV === 'production') {
   config.devtool = false;
   config.plugins = [
      new ExtractTextPlugin('st.css'),
      new webpack.optimize.OccurrenceOrderPlugin(),
      new webpack.optimize.UglifyJsPlugin({comments: false}),
      new webpack.DefinePlugin({
         'process.env': {NODE_ENV: JSON.stringify('production')}
      })
   ];
};

module.exports = config;
  • Вопрос задан
  • 1047 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Hot Module Replacement (документация)
  1. Убрать или выключить ExtractTextPlugin для dev-конфигурации.
  2. Добавить опцию hot:true для devServer.
  3. Добавить корректный publicPath для output и devServer.
  4. Проверить конфигурацию react-hot-loader для точки входа под React.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы