Ответы пользователя по тегу Webpack
  • Как правильно инициализировать в проекте дефолтные настройки для одного из модулей?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Указать его в самом начале (то есть "вверху" приложения, там где он первый раз "появляется"), где применяется axios / либо где-вы его ради этого импортнете. Разве так не сработает?

    Либо такой вариант:
    function buildHeaders() {
      const authToken = localStorage.getItem('token')
      return { ...defaultHeaders, Authorization: authToken }
    }


    export function httpGet(url) { //экспортируете функцию для будущих вызовов
      return fetch(url, { // я использую fetch, но для axios сделать, думаю вы сможете
        headers: buildHeaders(), // те самые заголовки, которые нужны в каждом запросе
      })
      .then(checkStatus) // это уже не важно, у меня в коде просто далее идет еще несколько проверок общих
    }
    Ответ написан
    2 комментария
  • Что лучше взять для сборки фронтенда webpack или gulp?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Для вашей задачи - Gulp
    Ответ написан
    Комментировать
  • Какая разница в инструментах webpack?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    webpack-dev-server - средство для удобной разработки ваших одностраничных приложений от webpack (то есть, из "коробки")

    webpack-dev-middleware - собственно, middleware, который добавляет возможности вашему другому серверу (в случае тэга вопросов - написанному на node.js и фреймворке express). Что добавляет? Ну хотя бы, возможность hot-reload'a..

    Что и где использовать разницы нет. Как вам удобнее так и делайте. Либо просто webpack-dev-server, либо какой-то ваш "усложенный" сервер написанный на node.js + middleware webpack-dev-server. Под middlewar'ом можно понимать некий "усилитель", как уже было написано, например: усиливай мой "сервер" на "hot-reload"
    Ответ написан
    Комментировать
  • Как правильно настроить webpack-dev-server?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    1) либо не создан index.html на одном уровне с конфигом webpack
    2) либо нет роута по '/'

    p.s. + покажите console браузера, может там еще какая ошибка по делу будет.
    Ответ написан
  • Как в webpack задать компиляцию в несколько файлов?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Нужно использовать extractTextPlugin
    Кусочек конфига:

    для webpack 2:
    module.exports = {
      devtool: 'cheap-module-source-map',
      entry: [
        './src/index'
      ],
      output: {
        path: path.join(__dirname, 'production/public/'),
        filename: 'bundle.js',
        publicPath: '/',
      },
      plugins: [
        new webpack.DefinePlugin({
          'process.env': {
            'NODE_ENV': JSON.stringify('production')
          }
        }),
        new ExtractTextPlugin({
          filename: 'style.css',
          disable: false,
          allChunks: false, // true
        })
      ],
      module: {
        rules: [
          {
            test: /\.js$/,
            loaders: ['babel-loader'],
            include: path.join(__dirname, 'src'),
          },
          {
            test: /\.css$/,
            loader: ExtractTextPlugin.extract({
              fallbackLoader: 'style-loader',
              loader: ['css-loader', 'postcss-loader'],
              publicPath: '/public',
            }),
          }, {
            test: /\.scss$/,
            loader: ExtractTextPlugin.extract({
              fallbackLoader: 'style-loader',
              loader: ['css-loader', 'postcss-loader', 'sass-loader'],
              publicPath: '/public',
            }),
          },
    ....


    Для webpack 1:
    module.exports = {
      devtool: 'cheap-module-source-map',
      entry: [
        './src/index'
      ],
      output: {
        path: path.join(__dirname, 'production/public/'),
        filename: 'bundle.js',
        publicPath: '/',
      },
      plugins: [
        new webpack.DefinePlugin({
          'process.env': {
            'NODE_ENV': JSON.stringify('production')
          }
        }),
        new ExtractTextPlugin('style.css', {
          allChunks: false
        })
      ],
      module: {
        loaders: [
          {
            test: /\.js$/,
            loaders: ['babel'],
            include: path.join(__dirname, 'src')
          },
          {
            test: /\.scss$/,
            include: path.join(__dirname, 'src'),
            loader: ExtractTextPlugin.extract('style-loader', 'css-loader!postcss-loader!sass-loader')
          },
          {
            test: /\.css$/,
            loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
          },
    ...


    Само собой, нужно не забыть добавить ExtractTextPlugin
    const ExtractTextPlugin = require('extract-text-webpack-plugin');
    Ответ написан
    5 комментариев
  • Не стартует проект из npm start, в чем проблема?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    npm install bower -g на отлично прошел

    Это вы установили bower глобально.

    Для запуска шаблона, вам наверняка нужно:
    1) npm install
    2) bower install
    3) далее, то что написано в доке, может быть gulp build, например.
    Ответ написан
    3 комментария
  • Как дебажить webpack loaders?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Можно написать console.log(pack) внутри файла с кодом лоадера (node_modules/postcss-loader/index.js)
    Вывод console.log'a будет в терминале, где запущен webpack
    Ответ написан
  • При сборке Webpack выдает непонятную ошибку?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Проверьте версию webpack'a, у Кантора был скринкаст для ветки 1.x.x, а у вас по умолчанию, скорее всего поставился webpack 2.x.x
    Ответ написан
  • Как включить в сборку сторонние библиотеки?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Если эти шрифты и картинки не должны участвовать в сборке (а они скорее всего не должны), то просто кладите их в "public директорию".

    ...
    // для продакшен конфига
    output: {
        path: path.join(__dirname, 'production/public/'),
        filename: 'bundle.js',
        publicPath: '/',
      },
    ...
    // для dev конфига
    output: {
        path: path.join(__dirname, 'dist'),
        filename: 'bundle.js',
        publicPath: '/static/'
      },
    ...


    Затем где-то в коде...
    ...
    .mac-bg {
      background: url(/static/i/service/mac-bg.jpg) no-repeat;
      background-size: cover;
    }
    ...


    И директория билда:
    3003f3c887984d67b8943a2c7b352e3b.jpg
    Ответ написан
    5 комментариев
  • Как избавиться от .less при билде?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Использовать ExtractTextPlugin (гугл, офф.дока для 1й версии вебпака)
    Ответ написан
  • Можно ли использовать Webpack для верстки?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Нет необходимости. Gulp справляется с вашими задачами не хуже (а может и лучше).
    Ответ написан
    2 комментария
  • Как настроить sass в webpack?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Ошибка вам явно говорит, что проблема тут:
    path = require('.');
    Я даже не знаю, валидный ли это код... будет ли он искать index.js в этом случае?) В любом случае, это вряд ли то, что вы хотели.

    (если речь про webpack 1)
    Вам нужен sass-loader и extract-text-plugin. Вот и небольшая статейка (EN).
    Ответ написан
    Комментировать
  • Установка react/webpack, в чем проблема?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Могу предположить, что возможно проблемы в пути (есть пробел у директории Study projects). Попробуйте провернуть все это в директории, в пути до которой нет пробелов.
    Ответ написан
  • Почему появляется ошибка при сборке проекта?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    в дополнении к предыдущему ответу, выглядит это примерно так:
    .babelrc
    "presets": ["es2015", "stage-0", "react"],
    Ответ написан
    Комментировать
  • Npm, Node, Webpack — как разобраться новичку?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    1. Странно, я до этого не встречал, чтобы node был разной версии в разных директориях. Давайте здесь поподробнее со скринами посмотрим.

    2 и 3 - предлагаю полностью удалить node, а затем установить себе NVM, и когда он установится через него установить последнюю и другие нужные версии node, если будет нужно (обычно хватает последней, но для старых проектов может потребоваться иная).

    4 - просто копируете конфиг вебпака из проекта в проекти пилите. Потом, например, вам приходит мысль: так, у этих пяти проектов были общие файлы такие-то, общая структура папок и вот такой параметр в конфиге. Как мне это обобщить? Как вынести в отдельную директорию, из которой я потом буду просто копировать готовый шаблон? (обычно нужно просто скопировать ;) ). Когда у вас будет готовый шаблон, вы приобщитесь к миру с возгласом: у меня есть свой boilerplate. Тогда можете глянуть на чужие (гуглите webpack boilerplate), но не берите сразу чужой просто так, а разберите по кусочкам.

    p.s. мне еще ниразу не пригодилось брать "просто для верстки" webpack. Для этих целей использую gulp + browserify, а когда пишу на реакте - webpack.

    p.p.s. что почитать? В кратце в гугле поищите следующее: что такое node.js, как npm с ним связан, что происходит когда вы выполняете npm install, как работает секция scripts в package.json.
    Ответ написан
    Комментировать
  • Как реализовать отправку отрендерившегося сообщения (React) чата в другой html-класс?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Использовать flux/redux
    Использовать "события" (хоть custom Event , хоть EventEmitter (после заголовка Глобальная система событий), хоть jquery events)
    Ответ написан
    Комментировать
  • Почему webpack-dev-server ен обновляет страницу?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    в секции с лоадерами:
    {
            test: /\.js$/,
            loaders: ['react-hot', 'babel'],
            //include/exclude и тд
          },


    в секции с плагинами:
    plugins: [
        new WebpackNotifierPlugin, // и другие...
        new webpack.HotModuleReplacementPlugin()
      ],
    Ответ написан
    Комментировать
  • Webpack годится в продакшн?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Добрый день, как уже было сказано выше - задача webpack'a собрать файл (со стилями и js, или только js), который называется в общем случае "бандл". Для этого, бандл нужно собрать (сделать билд) с помощью production конфига для webpack. Продакшен конфиг обычно включает в себя различные "штуки" для оптимизации конечного размера бандл файла, ведь чем меньше - тем лучше.

    Далее бандл вы выкладываете к себе на сервер и отдаете как обычный статичный файл. В таком случае, после изменений кода, вы должны будете:
    а) заново сделать билд (собрать новый бандл)
    б) перезаписать файл на сервере

    Обычно в проекте есть 2 конфига: dev (девелоперский, то есть конфиг удобный для разработчика) и prod (конфиг, в котором главное - пожать файл как можно сильнее).

    В dev конфиге, например, часто используют webpack-dev-server, который позволяет пользоваться такой штукой как HMR (hot module replacement), которая в свою очередь позволяет очень комфортно разрабатывать: вы изменяете что-то в файле, и у вас сразу в открытом окне браузера отображаются изменения (без перезагрузки страницы).

    В prod конфиге такое конечно не нужно.

    Пример команды, для того, чтобы сделать prod бандл:
    NODE_ENV=production webpack --progress --config ./webpack.prod.config.js -p


    Главное здесь -p, так как эта опция говорит вебпаку, что необходимо сделать продакшен-сборку. Так же, в этой команде указан специальный конфигурационный файл (webpack.prod.config.js) и переменная NODE_ENV имеет значение 'production'

    Поэтому, точнее будет ответить: с вебпаком можно собрать файл скриптов (и, если настроено, стилей) для продакшена.
    Ответ написан
    Комментировать
  • Модульность на фронтенде?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    (кратко про себя)
    Все лежит в папках: компонент + стиль. Собирается webpack'ом. Но у меня react-проекты.

    (длинно, но вроде бы по делу)
    Если относительно долго занимаетесь - у вас скорее всего уже выработались части, которые похожи - их выносите. Так же скорее всего у вас есть одинаковая структура (обычно это js/css/images и html, либо как вы пишите компонентами (отдельными папками) внутри котороых html + стили и может js ). Делайте шаблон для будущих проектов, в первую очередь удобным для себя - ведь вам с ним работать, а в нем реализуйте то что умеете по-максимуму (жмите картинки, оптимизируйте js и т.д)

    Плагины, которые используете для Gulp, просто проверьте в блэклисте, а так же можете посмотреть новые версии. Вообще, хорошо если вы знаете все свои плагины, в таком случае - вам и этот пункт можно не выполнять.

    кажется, что не использовал это все на 100%

    Всем так кажется, поэтому когда не хочется заниматься работой, идем в гугл и смотрим опен-сорс проекты других людей: gulp, wepback, затем если нашли что-то любопытное идем в npm/github читаем доку. Пытаемся применить в работе.

    Что имеем в итоге?
    1) если все работает и вас устраивает (скорость сборки, удобство проверки в разных браузерах ...) - "работу работать";
    2) если есть время и желание - гуглите опен-сорс решения, читайте твиттер интересных людей / новостную подписку;
    3) если хочется услышать мнение коллег, но при этом коллег рядом нет - пишите статью на хабр. Просто статья: я использую такие-то плагины в своем "шаблоне" - вряд ли получит лестные отзывы, но возможно кто-то напишет: вот в этом месте у вас плохо, сделайте иначе. Возможно, вы придумаете, как написать статью интересно - тогда честь и хвала. И критика. А обоснованная критика всегда хорошо.

    P.S. если используете Jade и следуете BEM-методологии, то я бы порекомендовал посмотреть на этот проект
    Ответ написан
    Комментировать
  • Webpack? Но зачем?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Для одностраничников (да еще и без реакта, хотя собственно кому в голову придет делать LP на реакте :) ) - конечно, webpack вообще ни к чему. Вам же достаточно gulp + browserSync для комфортной разработки?

    ---
    Когда ваш "инструментарий" отлично справляется с работой - используйте его.
    Когда у ваших инструментов есть какой-то раздражающий момент - ищите варианты решения проблемы. Может быть что-то заменить?
    Когда просто "хочется" чего-нибудь новенького - посмотрите по сторонам, лишним не будет.
    Ответ написан
    2 комментария