Предварительные требования. Убедитесь, что вы понимаете основы использования TypeScript с Webpack. Для этого Вы можете прочитать мой последний урок здесь. 👈
Горячая замена модулей (HMR) заменяет, добавляет или удаляет модули во время работы приложения без полной перезагрузки. Это может значительно ускорить разработку.
Вы также можете прочитать официальное руководство по адресу https://webpack.js.org/guides/hot-module-replacement/, но оно может быть немного нечетким. Моя статья более ясна и прямолинейна!
Давайте продолжим с того места, где мы остановились
На данный момент, если вы хотите, чтобы ваше приложение работало с обновленным кодом в вашем браузере, вам необходимо
- Скомпилируйте код, также известный как
npm run build
- А затем нажмите кнопку обновления в браузере
— Очевидно, что это сведет с ума любого человека через несколько часов, даже самых крутых индийских программистов. (и это тоже пустая трата времени)
Так как же обновить нашу среду разработки?
В чудесном мире Webpack это на удивление просто. Давайте поблагодарим Тобиаса Копперса, автора Webpack.
Задача 1: Как использовать плагин copy-webpack?
Вам нужно иметь файл index.html
в папке сборки. Для этого мы можем использовать copy-webpack-plugin
. Подробнее об этом можно прочитать на странице webpack.js.org/copy-webpack-plugin
npm run install --save-dev copy-webpack-plugin
Обновите файл конфигурации вашего веб-пакета
//webpack.config.dev.js ... const CopyPlugin = require('copy-webpack-plugin'); module.exports = { ... plugins: [ new CopyPlugin({ patterns: [ {from: 'public'} ] }) ], ... }
Предыдущий фрагмент кода копирует все ваши файлы из папки /public
в место назначения для вывода.
Это означает, что после сборки убедитесь, что у вас есть правильный путь к bundle.js
в вашем index.html
относительно нового местоположения .html.
// /public/index.html ... <body> ... <script src="./bundle.js"></script> </body> ...
Примечание: также можно использовать html-webpack-plugin, но мы не будем использовать его в этом уроке.
Убедитесь, что у вас естьbuild
скрипт вpackage.json
"scripts": { ... "build": "webpack --config webpack.dev.config.js", ... },
Теперь, если вы выполните npm run build
, он должен создать папку /dist
с содержимым:
Если у вас есть какие-либо вопросы, свяжитесь со мной в twitter/@codegodzilla
Теперь вы знаете, как использовать copy-webpack-plugin
, что является важным навыком в веб-разработке на JavaScript!
Продолжим задание 2.
Задача 2: Как использовать webpack devServer?
Мы реализуем горячую перезагрузку с помощью webpack-dev-server
1. Установить зависимость
npm run install --save-dev webpack-dev-server
2. Обновите файл конфигурации
// webpack.dev.config.js ... module.exports = { ... devServer: { contentBase: path.join(__dirname, 'dist'), port: 9002, } }
3. Добавить новый скрипт
// package.json "scripts": { ... "start:dev": "webpack-dev-server --open --config webpack.dev.config.js" },
4. Убедитесь, что значение resolve.extensions
верное. У вас должен быть включен “.js”
, иначе webpack-dev-server
не сможет найти модули.
//webpack.dev.config.js ... resolve: { extensions: ['.ts', ".js"], }, ...
5. Выполнить npm run start:dev
Он должен открыть браузер с вашим index.html, который ссылается на ваш bundle.js.
6. Проверьте, работает ли горячая перезагрузка, для этого измените некоторый код в папке/src
, нажмите «Сохранить» —> веб-пакет должен перезагрузить ваш сайт.
Поздравляем, теперь вы знаете основы горячей замены модулей с помощью Webpack. 🚀
Как использовать React, TypeScript с Webpack?
Для этого вам нужно прочитать мой следующий урок, загляните на мой сайт www.codegodzilla.com
Вы также можете найти меня в Твиттере по адресу https://twitter.com/codegodzilla.
И мой канал на Youtube: Youtube API Developer CodeGodzilla
Удачи 🍀