Почему мои изменения не отображаются в браузере? Webpack и HMR с и без webpack-dev-сервера. Первая конфигурация вебпака

Я новичок в веб-пакете и хочу простую конфигурацию, которая перезагрузит мои изменения SCSS, HTML и JS в браузер. Я читал об использовании параметра options: { hmr: true } в конфигурации для style-loader, а также об использовании webpack-dev-server для этого. Мои изменения вызывают успешную перекомпиляцию, но мне приходится перезагружать браузер, чтобы увидеть изменения. Я понимаю, что именно для этого и нужен HMR.

Вот моя конфигурация веб-пакета:

// webpack v4
const path = require('path');
// update from 23.12.2018
const nodeExternals = require('webpack-node-externals');
// const ExtractTextPlugin = require('extract-text-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');

module.exports = {
  entry: { main: './src/index.js' },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].[hash].js'
  },
  target: 'node', // update from 23.12.2018
  externals: [nodeExternals()], // update from 23.12.2018
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader"
        }
      },
      {
        test: /\.scss$/,
        use: [
          // { loader: 'style-loader', options: { hmr: true } },
          'style-loader',
          MiniCssExtractPlugin.loader,
          'css-loader',
          'postcss-loader',
          'sass-loader'
        ]
      }
    ]
  },
  plugins: [
    new CleanWebpackPlugin(),
    new MiniCssExtractPlugin({
      filename: 'style.[hash].css'
    }),
    new HtmlWebpackPlugin({
      inject: false,
      hash: true,
      template: './src/index.html',
      filename: 'index.html'
    })
  ]
};

Последнее, что я пробовал, это просто запуск (согласно этому руководству https://medium.freecodecamp.org/how-to-combine-webpack-4-and-babel-7-to-create-a-fantastic-react-app-845797e036ff):

node_modules/.bin/webpack-dev-server --mode development --open --hot --history-api-fallback

Поскольку я не могу найти подобных проблем в Интернете, я полагаю, что это как-то связано с моей конфигурацией.

Вот мой package.json:

{
  "name": "webpack-4-tutorial",
  "version": "1.0.0",
  "description": "test",
  "main": "index.js",
  "license": "MIT",
  "private": false,
  "devDependencies": {
    "@babel/core": "^7.4.3",
    "@babel/preset-env": "^7.4.3",
    "autoprefixer": "^9.5.1",
    "babel-loader": "^8.0.5",
    "clean-webpack-plugin": "^2.0.1",
    "css-loader": "^2.1.1",
    "extract-text-webpack-plugin": "^4.0.0-beta.0",
    "html-webpack-plugin": "^3.2.0",
    "mini-css-extract-plugin": "^0.6.0",
    "node-sass": "^4.11.0",
    "postcss-loader": "^3.0.0",
    "precss": "^4.0.0",
    "sass-loader": "^7.1.0",
    "style-loader": "^0.23.1",
    "stylelint": "^10.0.1",
    "stylelint-config-recommended": "^2.2.0",
    "webpack": "^4.30.0",
    "webpack-cli": "^3.3.1",
    "webpack-dev-server": "^3.3.1",
    "webpack-node-externals": "^1.7.2"
  },
  "scripts": {
    "dev": "webpack --mode development --watch",
    "build": "webpack --mode production"
  }
}

Первоначально создал файл конфигурации на основе это руководство, но дальше флага webpack --watch дело не пошло.

Заранее спасибо.


person Alex B    schedule 23.04.2019    source источник


Ответы (1)


Вы пытались просто добавить непосредственно в объект конфигурации devServer в файле web pack.config?

        devServer: {
            hot: true,
        }

person dev_phil    schedule 15.10.2019