Страницы

Поиск по вопросам

Показаны сообщения с ярлыком webpack2. Показать все сообщения
Показаны сообщения с ярлыком webpack2. Показать все сообщения

среда, 11 декабря 2019 г.

webpack-stream: где указать настройки при использовании другой версии webpack

#javascript #gulp #webpack #webpack2 #webpack_stream


В документации webpack-stream заявлена возможность использовать не ту версию webpack,
которая является зависимостью webpack-stream, а ту, которая установлена отдельно:


  If you would like to use a different version of webpack than the one
  this plugin uses, pass in an optional 2nd argument:


var gulp = require('gulp');
var webpack = require('webpack');
var gulpWebpack = require('webpack-stream');

gulp.task('default', function() {
  return gulp.src('src/entry.js')
    .pipe(gulpWebpack({}, webpack))
    .pipe(gulp.dest('dist/'));
});


Это привлекательно в первую очередь тем, что можно использовать последнию версию
webpack 2.x.x, а не deprecated-зависимость 1.x.x. Но где нужно прописывать настройки
webpack в данном случае? Для случаев, когда используется зависимость, примеры настроек
в документации есть (например, указание внешнего файла конфигурации или нескольких
точек входа), но для внешней версии webpack не сказано, как прописывать настройки.

Я пробовал вариант с настройками во внешнем файле. Если мы создадим webpack.config.js-файл,
то он будет проигнорирован. Webpack отработает без ошибок компиляции, но сгенерирует
файл с именем вроде ba2e257fdec0945b554e.js при следующих настройках в gulp-файле:

var  gulp = require('gulp'), 
    webpack = require('webpack'),
    webpackStream = require('webpack-stream');

gulp.task('wpstream', function() {
  return gulp.src('development/03_es6/index.js')
    .pipe(webpackStream({}, webpack))
    .pipe(gulp.dest('development/js'))
    .pipe(browserSync.reload({stream: true})); 
});


Насколько я могу сделать вывод, запуск консольной комманды gulp wpstream не приведёт
к тому же результату, что и выполнение комманды webpack. В последнем случае всё отрабатывает
корректно с учётом инструкций webpack.config.js, хотя в обоих случах выполняется та
желаемая (новая) версия webpack. 
    


Ответы

Ответ 1



когда ты конфигурируешь задачу следующим образом: gulp.task('wpstream', function() { return gulp.src('development/03_es6/index.js') .pipe(webpackStream({}, webpack)) .pipe(gulp.dest('development/js')) .pipe(browserSync.reload({stream: true})); }); В webpackStream({}, webpack) ты передаешь 2 параметра: 1 - объект конфигурации 2 - движок вебпака, который будет все обрабатывать. есть еще 3-й параметр - фукция для ручной обработки и вывода статистики и ошибок. Тебе же нужно обратить внимание на первый агрумент который ты передаешь, а это пустой объект. Если заглянуть в исходники webpack-sream, то можно увидеть, что если настройки не передаются или передается пустой объект, то webpack-sream запускает сам вебпак со своими дефолтными настройками. Поэтому существует как минимум 2 способа передать настройки: 1 - опрелить их прямо в webpackStream({здесь настройки}, webpack) 2- взять настройки из файла webpack.condig.js Во втором случае задача будет выглядеть примерно так: var gulp = require('gulp'), webpack = require('webpack'), webpackStream = require('webpack-stream'), webpackconfig = requre(./webpack.config.js); gulp.task('wpstream', function() { return gulp.src('development/03_es6/index.js') .pipe(webpackStream(webpackconfig, webpack)) .pipe(gulp.dest('development/js')) .pipe(browserSync.reload({stream: true})); });

среда, 17 июля 2019 г.

Как правильно настроить webpack, для работы с pug файлами

Возникли проблемы с настройкой webpack
Надо, чтобы в проекте была динамическая HTML-страница. Лучше, чтобы она пререндерилась на сервере. Сам фреймворк: Adonis, однако стандартный template language в нем не такой удобный (edge - файлы). Посему решил использовать Pug
Сама структура проекта такая: есть папка source, в ней папки для каждой страницы / компонента. После билда webpack'ом все попадает в нужные места: public и views.
Все, кроме картинок. Я так и не понял, как по правильному настроить webpack, так, чтобы он не компилировал pug в html и менял ссылки в img src (в случае JPG/JPEG/PNG - это image/[name].[ext], а в случае SVG - icon/[name].svg).
И вообще: правильно ли таким образом использовать pug? Или лучше его использовать только во время билда?
Сейчас я использую следующий способ: Добавляю pug файл в webpack с помощью: html-webpack-plugin, после использую html-webpack-pug-plugin, чтобы в файл добавлялись link и script pug-вида. Я так понимаю, надо настроить loader, такая конструкция:
{ test: /\.pug$/, loaders: ['html-loader', 'pug-html-loader'] }
работает, однако на выходе получаю файл с дефолтным HTML шаблоном.


Ответ

Появилось решение: https://www.npmjs.com/package/pug-asset-loader С помощью этого плагина, можно обрабатывать pug файлы, используя функцию pal() для относительного пути, который будет заменен после сборки.

понедельник, 29 октября 2018 г.

webpack-stream: где указать настройки при использовании другой версии webpack

В документации webpack-stream заявлена возможность использовать не ту версию webpack, которая является зависимостью webpack-stream, а ту, которая установлена отдельно:
If you would like to use a different version of webpack than the one this plugin uses, pass in an optional 2nd argument:
var gulp = require('gulp'); var webpack = require('webpack'); var gulpWebpack = require('webpack-stream');
gulp.task('default', function() { return gulp.src('src/entry.js') .pipe(gulpWebpack({}, webpack)) .pipe(gulp.dest('dist/')); });
Это привлекательно в первую очередь тем, что можно использовать последнию версию webpack 2.x.x, а не deprecated-зависимость 1.x.x. Но где нужно прописывать настройки webpack в данном случае? Для случаев, когда используется зависимость, примеры настроек в документации есть (например, указание внешнего файла конфигурации или нескольких точек входа), но для внешней версии webpack не сказано, как прописывать настройки.
Я пробовал вариант с настройками во внешнем файле. Если мы создадим webpack.config.js-файл, то он будет проигнорирован. Webpack отработает без ошибок компиляции, но сгенерирует файл с именем вроде ba2e257fdec0945b554e.js при следующих настройках в gulp-файле:
var gulp = require('gulp'), webpack = require('webpack'), webpackStream = require('webpack-stream');
gulp.task('wpstream', function() { return gulp.src('development/03_es6/index.js') .pipe(webpackStream({}, webpack)) .pipe(gulp.dest('development/js')) .pipe(browserSync.reload({stream: true})); });
Насколько я могу сделать вывод, запуск консольной комманды gulp wpstream не приведёт к тому же результату, что и выполнение комманды webpack. В последнем случае всё отрабатывает корректно с учётом инструкций webpack.config.js, хотя в обоих случах выполняется та желаемая (новая) версия webpack.


Ответ

когда ты конфигурируешь задачу следующим образом:
gulp.task('wpstream', function() { return gulp.src('development/03_es6/index.js') .pipe(webpackStream({}, webpack)) .pipe(gulp.dest('development/js')) .pipe(browserSync.reload({stream: true})); });
В webpackStream({}, webpack) ты передаешь 2 параметра: 1 - объект конфигурации 2 - движок вебпака, который будет все обрабатывать. есть еще 3-й параметр - фукция для ручной обработки и вывода статистики и ошибок. Тебе же нужно обратить внимание на первый агрумент который ты передаешь, а это пустой объект. Если заглянуть в исходники webpack-sream, то можно увидеть, что если настройки не передаются или передается пустой объект, то webpack-sream запускает сам вебпак со своими дефолтными настройками. Поэтому существует как минимум 2 способа передать настройки: 1 - опрелить их прямо в webpackStream({здесь настройки}, webpack) 2- взять настройки из файла webpack.condig.js
Во втором случае задача будет выглядеть примерно так:
var gulp = require('gulp'), webpack = require('webpack'), webpackStream = require('webpack-stream'), webpackconfig = requre(./webpack.config.js);
gulp.task('wpstream', function() { return gulp.src('development/03_es6/index.js') .pipe(webpackStream(webpackconfig, webpack)) .pipe(gulp.dest('development/js')) .pipe(browserSync.reload({stream: true})); });