Lab / JS

Использование webpack совместно с gulp.js

Webpack это популярный сборщик модулей для современных приложений на JavaScript. Самым большим преимуществом является его гибкость — он может быть как простым так и сложным, в зависимости от того, что вам нужно.

Неважно, работаете ли вы на пике новейших технологий, и ваше приложение наполнено современными модулями ES6 или все еще поддерживаете легаси код, написанный в стиле AMD, Webpack подходит для любой ситуации.

Я стараюсь не писать всё приложение в одном гигантском бандле JavaScript которым явно подавиться любой браузер при загрузке сайта. Мне нравится использовать таск менеджер Gulp.Js, это удобный менеджер задачь, который помогает с такими задачами как компиляция SAAS на лету, сжатие картинок, выкладка проекта на продакшен итд. Однако есть вероятность, что вам может понадобиться добавить в проект немного JavaScript. Каково решение для этого сценария?

Webpack + Gulp.js = <3

Давайте объединим простоту API Gulp'a с мощьностью webpack, чтобы создать себе удобное и современное окружение для разработки на JavaScript. Для начала установим эти замечательные инструменты:

npm i -D gulp webpack webpack-stream

Теперь напишем конфиг Галпа:

// gulpfile.js

const gulp = require('gulp');
const webpack = require('webpack');
const webpackStream = require('webpack-stream');
const webpackConfig = require('./webpack.config.js');

gulp.task('js', () => {
 gulp.src('./src/js/index.js')
 .pipe(webpackStream(webpackConfig), webpack)
 .pipe(gulp.dest('./dist/js'));
});

Теперь расскажем Вебпаку, что он должен делать:

npm i -D babel-core babel-loader babel-preset-latest
// webpack.config.js

module.exports = {
 output: {
 filename: 'bundle.js',
 },
 module: {
 rules: [
 {
 test: /\.(js|jsx)$/,
 exclude: /(node_modules)/,
 loader: 'babel-loader',
 query: {
 presets: [
 ['latest', { modules: false }],
 ],
 },
 },
 ],
 },
};

Разумеется это всего лишь пример базового файла конфигурации. Но с этого момента вы можете делать всё что угодно с настройками вашего проекта. Чтобы запустить задачу теперь просто запустите в терминале:

 _________
< gulp js >
 ---------
 \ ^__^
 \ (@@)\_______
 (__)\ )\/\
 ||----w |
 || ||