Вариант 1. Горячая замена самого модуля:
const greetings = 'Hello, friend';
let h1;
function say() {
h1 = document.createElement('h1');
h1.innerHTML = greetings;
document.body.appendChild(h1);
}
say();
if (module.hot) {
module.hot.dispose(() => {
document.body.removeChild(h1);
});
module.hot.accept();
}
Вариант 2. Горячая замена дочернего модуля:
Добавьте модуль
greetings.js:
const greetings = 'Hello, friend';
export default greetings;
и измените основной модуль так:
import './styles.css';
let greetings = require('./greetings').default;
let h1;
function say() {
h1 = document.createElement('h1');
h1.innerHTML = greetings;
document.body.appendChild(h1);
}
say();
if (module.hot) {
module.hot.accept('./greetings', () => {
greetings = require('./greetings').default;
document.body.removeChild(h1);
say();
});
}
Если не используется транспиляция модулей из
ES6 в
CommonJS, то должно работать и так:
import './styles.css';
import greetings from './greetings';
let h1;
function say() {
h1 = document.createElement('h1');
h1.innerHTML = greetings;
document.body.appendChild(h1);
}
say();
if (module.hot) {
module.hot.accept('./greetings', () => {
document.body.removeChild(h1);
say();
});
}