Каждый раз, когда я пытался узнать о скриптах сборки, упаковщиках или других штуках javascript, у меня возникали проблемы с поиском руководств, в которых не требовалось настраивать все.
Когда вы учитесь, вам не нужно настраивать приложение React/Redux с тестами Sass, Flow и Jest. Иногда хочется просто делать что-то одно.
Это руководство посвящено настройке проекта Webpack, и мы сделаем только минимально возможное.
Webpack — это упаковщик. Все ваши файлы Javascript, HTML, CSS, Sass, JSX или другие файлы будут объединены предпочтительно в один или два файла.
Помимо возможности использовать такие технологии, как Sass или React, Webpack позволяет легко делить файлы и использовать синтаксис модулей ES6, например:
import myThing from './myThing.js'
Установка
Чтобы установить Webpack, просто запустите:
npm install webpack -g
Файл конфигурации
Просто иметь Webpack недостаточно. В вашем проекте вам понадобится файл webpack.config.js
. Здесь вы объясняете webpack, что вы хотите, чтобы он делал.
Я начну со структуры файла, которая выглядит следующим образом:
Начнем с невероятно простого примера:
module.exports = { entry: './src/app.js', // This tells webpack where to start output: { filename: './build/bundle.js' // This tells webpack the output } };
На всякий случай, если вы раньше не видели синтаксис module.exports
, вам следует ознакомиться с документацией по модулям для Node:
Давайте попробуем!
Попробуйте запустить $ webpack
в командной строке в папке вашего проекта. (Обратите внимание, что я использую $
для обозначения того, что это должно быть запущено из командной строки; не включайте $
в свою команду). Вы увидите что-то вроде:
Вы должны заметить, что webpack создал для нас папку build
с файлом bundle.js
внутри. На данный момент вам не нужно беспокоиться о коде, который он сгенерировал для вас.
Давайте сделаем что-нибудь.
Создайте новый файл с именем hello.js
в той же папке, что и ваш app.js
.
В этом файле давайте определим функцию, а затем экспортируем ее.
// src/hello.js function myFunction() { console.log("Hello Webpack!") } module.exports = myFunction
Затем в вашем app.js
давайте require
эту функцию и вызовем ее.
// src/app.js var myFunction = require('./hello.js') myFunction();
Если мы сейчас запустим $ webpack
, то увидим, что наш код перемешан с кучей вещей, которые мы не писали.
Теперь немного HTML.
Хотя следующая часть не является лучшей практикой (мы вернемся к тому, как правильно это сделать, в другой раз), давайте создадим файл index.html
в папке build
.
Внутри этого файла давайте просто включим наш скрипт в одну строку.
<!-- build/index.html --> <script src="bundle.js"></script>
В моем случае я включил только тег сценария. Большинство браузеров в любом случае будут включать в себя все остальные теги html
и body
, поэтому, играя таким образом, нам не нужно беспокоиться о них.
Если вы откроете этот файл в Chrome и откроете инструменты разработчика с помощью cmd-opt-i
на Mac или ctrl-shift-i
на Windows, вы должны увидеть наш вывод console.log
в консоли!
Возникли проблемы? Весь код, который я использовал, доступен на Github.