-
Notifications
You must be signed in to change notification settings - Fork 16
webpack 5
✅ webpack.config.js
✅ style-loader
✅ css-loader
Создадим в папке нашего проекта папку 📂 css
Поместим в нее файл 📝 main.css
body {
background-color: #000;
font-family: monospace, Arial;
font-size: 16px;
color: #9ab;
}Добавим в файл script.js импорт созданного нами файла стилей:
import css from '../css/main.css'А теперь запустим сборку проекта
🚫 Вебпак выдаст нам ошибку:
он умеет собирать модули js, а вот для загрузки файлов других форматов нужны специальные загрузчики
Создадим файл webpack.config.js в корневой папке нашего приложения
Это скрипт, который создаст объект конфигурации webpack
| ☑️ | entry |
точка входа |
с этого файла начинается построение графа зависимостей |
| ☑️ | output |
файл сборки |
результат работы webpack |
| ☑️ | module |
описание модулей |
по умолчанию модули - это js-файлыдля подключения в качестве модулей файлов с другим расширением ( например, .css или .html )
нужны специальные программы-загрузчикиПроги-загрузчики "обертывают" содержимое нужного файла в скрипт, чтобы превратить их в "нормальные" модулиОбъект module имеет свойство rules ( объект с двумя свойствами ):module ↪ rules ↪ test тип файла модулей (/\.css$/) ↪ use загрузчик для файлов этого типа |
| ☑️ | plugins |
плагины |
Для разрешения конфликтов маршрутов ( путей ) к различным файлам сборки
первым делом в файле кофигурации webpack ( webpack.config.js )
подключайте встроенный Node.js-модуль path:
const path = require ( 'path' )Теперь можно использовать глобальную переменную __dirname для получения абсолютного пути к файлу с помощью метода path.resolve
Например, путь к папке build, находящейся в корневой папке приложения:
path.resolve ( __dirname, "build" )Для подключения css-файла нужно указать в файле 📝 webpack.config.js
( в объекте конфигурации, в свойстве module )
правило, по которому будут обрабатываться файлы с расширением css
Для этого в свойстве module.rules мы определим значение свойства test
с помощью регулярного выражения: /\.css$/ ( любые файлы с расширением css )
а свойство module.rules.use сделаем массивом, в котором передадим ссылки на загрузчиков:
[ 'style-loader', 'css-loader' ]const path = require ( 'path' )
module.exports = {
entry: { main: './js/script.js' },
output: {
path: path.resolve ( __dirname, 'build' ),
filename: 'index.js'
},
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
}Для того, чтобы вы понимали, почему в файле 📝 webpack.config.js используется module.exports, и как это работает, нужно понимать следующее:
В Node.js:
✋ module - это объект JS, у которого есть свойство ☝ exports
Если в файле 📝 sourse.js определено свойство module.exports, в любом другом файле ( например, 📝 sample.js ) можно вызвать функцию 🛒 require и передать ей в качестве аргумента имя файла ( "sourse.js" )
Результатом работы функции 🛒 require будет объект, ссылку на который мы поместили в module.exports в файле 📝 sample.js
☕ 1️⃣
module.exports = {
hello: function () {
console.log ( 'Привет, будущие девелоперы!' )
},
message: function ( mess ) { console.log ( mess ) }
}let lib = require ( './script.js' )
lib.hello ()
lib.message ( "Вы еще не знакомы с Node.js ?" ) Запустим теперь команду:
npm run start
> npm-test@1.0.0 start Z:\home\npm-test
> node start.js
Привет, будущие девелоперы!
Вы еще не знакомы с Node.js ?
npm install css-loader style-loader --save-dev
После установки загрузчиков они окажутся в папке 📂 node_modules проекта
package.json появилось свойство devDependencies, в котором перечислены установленные нами загрузчики с указанием версии пакета
👁🗨 Вебпак находится в режиме отслеживания наших файлов
Теперь перезагрузите страницу, в которой открыт файл index.html, и вы увидите, что созданный нами файл стилей подключен
Мы можем внести изменения в любой из наших файлов, и эти изменения будут автоматически отображены в файле сборки
Давайте, например, добавим в файл main.css:
img { margin: 40px; border: dotted 2px yellow; }перезагрузите страницу, и вы увидите изменения
© Irina H.Fylyppova 2018
Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 |
| ⏬ |
|---|
- Блок-схема алгоритма
- Developer Tools
- Chrome DevTools
- Переменные
- Оператор typeof
- Структуры данных
- Операторы присваивания
- Логические выражения
- Условные операторы
- Инкремент
- Свойство length
- Оператор цикла for
- UTF-8
Homework
- Приведение типов
- NaN | null | Infinity
- BigInt (ES10)
- Функции
- Методы
- Методы строк
- Методы массивов
- Date ()
Самостоятельная работа
Практика (XSS)
Homework
- Циклы while и do...while
- Циклы for...of и for...in
- Параметры по умолчанию
- Объект function
Практика
Homework
- Нативные и host-объекты
- Литерал объекта
- Унаследованные свойства
- Конструктор
- Модель наследования
- Публичные и приватные свойства
- Оператор in
1
Homework
- Итерирующие методы массивов
- Тестирование производительности
- SHA
Homework
- Размеры и прокрутка элемента
- Event Loop
- async | await
- API
- REST | HATEOAS
- status codes
JSON placeholder-
JSON server
fake chat
Homework
- strict mode
- Вычисляемые имена свойств
- Краткий синтаксис методов
- Краткий литерал объекта
- Классы
Homework
- :not(:defined)
- Shadow DOM
- Custom elements
- Lifecycle hooks
- whenDefined
- <template>
- slot
1
2
3
Homework
- npm
- webpack
Упражнение 1- ES6 модули
Упражнение 2- --mode | --watch
Упражнение 3
Упражнение 4
Упражнение 5
Упражнение 6
Упражнение 7
Упражнение 8
Homework
| ⏫ |
|---|


Дополнительно
Справочная инфо
Git Bush
TCP/IP
Коды символов