[JavaScript, Разработка веб-сайтов] Основы настройки Webpack
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Для начала установим webpack, делается это с помощью команд:
yarn add webpack webpack-cli -D, если используете менеджер пакетов yarn
npm i webpack webpack-cli --save-dev, для менеджера пакетов npm
Настраивается Webpack с помощью конфигурационного файла webpack.config.js, который хранится в корневой директории проекта.
Пример конфигурационного файла
const path = require('path')
module.exports = {
watch: true,
entry: "./src/index.js",
output: {
filename: "bundle.js",
path: path.resolve(__dirname,'build'),
publicPath: "/"
}
};
Начальная конфигурация представляет собой следующее:
- watch — заставляет webpack отслеживать изменения в файлах и заново выполнять сборку;
- entry — Указывает на точку входа в проект, и откуда нужно начать построение графа внутренних зависимостей проекта;
- output — Указывает путь, где будет располагаться создаваемый файл и как он будет называться;
Так же необходимо установить webpack-dev-server, который понадобится для разработки и отладки приложения.
yarn add webpack-dev-server для менеджера пакетов yarn или
npm i webpack-dev-server если используется npm
Для настройки webpack-dev-server добавим devServer в нашем конфигурационном файле.
Параметры для webpack-dev-server:
module.exports = {
//...
devServer: {
port: 8000,
historyApiFallback: true,
hot: true,
},
};
Также нам нужно добавить/заменить в нашем package.json файле скрипт запуска проекта
"start": "webpack-dev-server --mode development",
и скрипт для сборки билда
"build": "webpack --mode production"
Загрузчики
Загрузчики (loaders) — это специальные модули, которые используются для «загрузки» других модулей. Так же они позволяют предварительно обрабатывать файлы по мере их импорта или «загрузки».
Загрузчики могут преобразовывать файлы, например TypeScript в JavaScript, sass в css. Они могут даже позволить нам делать такие вещи, как импорт файлов CSS и HTML непосредственно в наши модули JavaScript. Для их использования необходимо прописать нужные загрузчики в разделе module.rules файла конфигурации.
Примеры загрузчиков:
- babel-loader — использует babel для загрузки файлов ES2015.
- file-loader — для загрузки различных файлов (изображения, музыкальные дорожки и т.д.) в выходную директорию
- style-loader — используется для загрузки стилей
- css-loader — включает загрузку файлов стилей
- @svgr/webpack — лоадер, позволяющий использовать svg изображения как jsx элементы
Для использования babel-loader необходимо установить babel/core. Также установим пресет babel/preset-env, который компилирует ES2015+ в ES5 путем автоматического определения необходимых Babel плагинов и полифайлов. Далее создадим файл .babelrc и в него добавим ранее установленный пресет.
{
"presets": [
"@babel/preset-env"
]
}
Теперь добавим загрузчик в нашу конфигурацию для преобразования файлов Javascript. Это позволит нам использовать синтаксис ES2015 + в нашем коде (который будет автоматически конвертироваться в ES5 в окончательной сборке).
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
},
},
Пример конфигурации с лоадером file-loader
{
test: /\.(png|jpe?g|gif)$/i,
use: [
{
loader: 'file-loader',
},
],
},
Пример конфигурации для лоадера @svgr/webpack
{
test : /\.(svg)$/,
use: [
{
loader: "@svgr/webpack"
}
]
}
Плагины
Плагины являются основой webpack, так как по сути вся его работа построена на системе плагинов. Они значительно расширяют возможности загрузчиков.
Загрузчики выполняют предварительную обработку файлов любого формата. Они работают на уровне отдельных файлов во время или до создания пакета. После того как отработают загрузчики наступает очередь плагинов. Плагины как правило отрабатывают только одну функцию.
Для их использования необходимо добавить нужные плагины в разделе plugins файла конфигурации.
Примеры плагинов:
- html-webpack-plugin — используется для создания html файлов
- copy-webpack-plugin — копирует отдельные файлы или целые каталоги, которые уже существуют, в каталог сборки.
- definePlugin — позволяет создавать глобальные константы
- HotModuleReplacementPlugin — включает HMR режим, обновляет только ту часть, которая изменилась, не перезагружая полностью приложение.
Пример конфигурации с добавленными плагинами:
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.DefinePlugin({
'process.env': JSON.stringify(process.env),
}),
new HtmlWebpackPlugin({
template: "./public/index.html",
}),
new CopyWebpackPlugin({
patterns: [
{ from: './public/favicon.ico', to: './public'}
]
}),
],
Также добавим плагин UglifyjsWebpackPlugin, который минимизирует js код, для этого нужно установить uglifyjs-webpack-plugin и добавить его в разделе optimization
optimization: {
minimizer: [new UglifyJsPlugin()]
},
===========
Источник:
habr.com
===========
Похожие новости:
- [JavaScript, Программирование, Разработка веб-сайтов] JavaScript: парочка задач на знание рекурсии
- [Дизайн, Интернет-маркетинг, Компьютерная анимация, Работа с векторной графикой, Разработка веб-сайтов] Разбор: зачем нужны анимации на сайтах + 7 полезных инструментов и библиотек для их создания
- [JavaScript, WebGL, Работа с 3D-графикой, Разработка веб-сайтов] Опыт создания нескольких 3д сцен без перезагрузки страницы (three.js)
- [JavaScript, Программирование, Разработка веб-сайтов] 200 теоретических вопросов по JavaScript
- [JavaScript, VueJS] Используем XSTATE для VueJS
- [CMS, Настройка Linux, WordPress, Разработка веб-сайтов, Nginx] 7 лучших БЕСПЛАТНЫХ альтернатив cPanel (издание 2020 года)
- [Разработка веб-сайтов, PHP] Использование HAProxy и Docker на машине разработчика при разработке сайтов
- [CMS, JavaScript, Разработка веб-сайтов, Хостинг] От небольшого вики-портала до хостинга
- [Карьера в IT-индустрии] Как НЕ надо начинать изучать программирование
- [JavaScript, Node.JS, Программирование, Разработка веб-сайтов] Руководство по Express.js. Часть 3 (перевод)
Теги для поиска: #_javascript, #_razrabotka_vebsajtov (Разработка веб-сайтов), #_webpack, #_javascript, #_webpack_4, #_javascript, #_razrabotka_vebsajtov (
Разработка веб-сайтов
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:32
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Для начала установим webpack, делается это с помощью команд: yarn add webpack webpack-cli -D, если используете менеджер пакетов yarn npm i webpack webpack-cli --save-dev, для менеджера пакетов npm Настраивается Webpack с помощью конфигурационного файла webpack.config.js, который хранится в корневой директории проекта. Пример конфигурационного файла const path = require('path')
module.exports = { watch: true, entry: "./src/index.js", output: { filename: "bundle.js", path: path.resolve(__dirname,'build'), publicPath: "/" } }; Начальная конфигурация представляет собой следующее:
Так же необходимо установить webpack-dev-server, который понадобится для разработки и отладки приложения. yarn add webpack-dev-server для менеджера пакетов yarn или npm i webpack-dev-server если используется npm Для настройки webpack-dev-server добавим devServer в нашем конфигурационном файле. Параметры для webpack-dev-server: module.exports = {
//... devServer: { port: 8000, historyApiFallback: true, hot: true, }, }; Также нам нужно добавить/заменить в нашем package.json файле скрипт запуска проекта "start": "webpack-dev-server --mode development",
и скрипт для сборки билда "build": "webpack --mode production"
Загрузчики Загрузчики (loaders) — это специальные модули, которые используются для «загрузки» других модулей. Так же они позволяют предварительно обрабатывать файлы по мере их импорта или «загрузки». Загрузчики могут преобразовывать файлы, например TypeScript в JavaScript, sass в css. Они могут даже позволить нам делать такие вещи, как импорт файлов CSS и HTML непосредственно в наши модули JavaScript. Для их использования необходимо прописать нужные загрузчики в разделе module.rules файла конфигурации. Примеры загрузчиков:
Для использования babel-loader необходимо установить babel/core. Также установим пресет babel/preset-env, который компилирует ES2015+ в ES5 путем автоматического определения необходимых Babel плагинов и полифайлов. Далее создадим файл .babelrc и в него добавим ранее установленный пресет. {
"presets": [ "@babel/preset-env" ] } Теперь добавим загрузчик в нашу конфигурацию для преобразования файлов Javascript. Это позволит нам использовать синтаксис ES2015 + в нашем коде (который будет автоматически конвертироваться в ES5 в окончательной сборке). {
test: /\.(js|jsx)$/, exclude: /node_modules/, use: { loader: 'babel-loader', }, }, Пример конфигурации с лоадером file-loader {
test: /\.(png|jpe?g|gif)$/i, use: [ { loader: 'file-loader', }, ], }, Пример конфигурации для лоадера @svgr/webpack {
test : /\.(svg)$/, use: [ { loader: "@svgr/webpack" } ] } Плагины Плагины являются основой webpack, так как по сути вся его работа построена на системе плагинов. Они значительно расширяют возможности загрузчиков. Загрузчики выполняют предварительную обработку файлов любого формата. Они работают на уровне отдельных файлов во время или до создания пакета. После того как отработают загрузчики наступает очередь плагинов. Плагины как правило отрабатывают только одну функцию. Для их использования необходимо добавить нужные плагины в разделе plugins файла конфигурации. Примеры плагинов:
Пример конфигурации с добавленными плагинами: plugins: [
new webpack.HotModuleReplacementPlugin(), new webpack.DefinePlugin({ 'process.env': JSON.stringify(process.env), }), new HtmlWebpackPlugin({ template: "./public/index.html", }), new CopyWebpackPlugin({ patterns: [ { from: './public/favicon.ico', to: './public'} ] }), ], Также добавим плагин UglifyjsWebpackPlugin, который минимизирует js код, для этого нужно установить uglifyjs-webpack-plugin и добавить его в разделе optimization optimization: {
minimizer: [new UglifyJsPlugin()] }, =========== Источник: habr.com =========== Похожие новости:
Разработка веб-сайтов ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:32
Часовой пояс: UTC + 5