Лоадеры в Webpack
Из коробки Webpack
понимает только JavaScript
, что будет если мы попытаемся запихнуть внутрь например SCSS
? Webpack
отдаст нам ошибку. Для таких вещей придумали лоадеры. Они позволяют брать файлы определенного типа и производить с ними операции.
Например, можно взять все файлы с расширением .less
, преобразовать их данные в CSS
, затем полученный CSS
минимизировать и сохранить в один общий файл. Лоадеры используются для того, чтобы просто обработать файл, который мы импортируем в js
.
- babel-loader: переводит ES6 JavaScript в ES5 JavaScript, который понимается всеми браузерами
- ts-loader: транспилирует TypeScript в JavaScript
- coffee-loader: транспилирует CoffeeScript в JavaScript
- css-loader: преобразует препроцессоры CSS, такие как SASS и LESS, в CSS
- style-loader: помещает выходные строки, сгенерированные css-loader, в теги
<style>
в файлеindex.html
- url-loader: преобразует большие изображения, включённые в виде отдельных файлов, в URL-адреса base64
- html-loader: экспортирует HTML в виде строки, с которой может работать JavaScript
Работа с лоадерами
Давайте установим первый лоадер:
npm install test-loader1 --save-dev
Давайте установим второй лоадер:
npm install test-loader2 --save-dev
После установки лоадеров мы можем воспользоваться ими в файле конфигурации, смотрите синтаксис:
webpack.config.jsexport default {
entry: "./src/index.js",
module: {
rules: [
{
// тип файла
test: /\.css$/i,
// лоадеры
use: ["test-loader1", "test-loader2"],
},
],
},
};
Для разных типов файлов можно писать разные правила:
webpack.config.jsexport default {
entry: "./src/index.js",
module: {
rules: [
{
test: /\.sass$/i,
use: ["test-loader1", "test-loader2"],
},
{
test: /\.less$/i,
use: ["test-loader3", "test-loader4"],
},
],
},
};