Ответы пользователя по тегу Webpack
  • Почему webpack ругается на шрифт?

    @SuperOleg39ru
    Front-end разработчик
    Проблема тут - include: path.join(__dirname, 'src/fonts')

    src/sass/materialize/fonts/roboto/Roboto-Regular.woff2 очевидно имеет другой путь)
    Ответ написан
    Комментировать
  • Как добавить минимизацию css в webpack?

    @SuperOleg39ru
    Front-end разработчик
    Когда вы добавляете стили в качестве entry, они оборачиваются в js скрипт, который просто вставляет эти стили на страницу, при загрузке.

    Обычный кейс для создания отдельного css бандла:

    // в вашем './src/app.js'
    import './styles/main.sass';
    
    // в конфиге вебпака все надо упростить
    // entry
    {
      app: './src/app.js',
    }
    // module.rules
    {
      test: /\.sass$/,
      use: ExtractTextPlugin.extract({
        fallback: 'style-loader',
        use: [
          'css-loader',
          'sass-loader'
        ]
      })
    }
    // plugins
    new ExtractTextPlugin('styles/[name].css')


    Название entry мы меняем, для читаемости, что бы не делать всякие bundle.bundle.js или bundle.min.js,
    Ваши стили получат такое же имя, как и основной js файл - итого app.min.js и app.min.css
    HtmlWebpackPlugin автоматически подтянет ссылки на эти файлы.
    Ответ написан
    1 комментарий
  • Можно ли писать на React + JSX без Webpack? В чем минусы?

    @SuperOleg39ru
    Front-end разработчик
    https://codepen.io/anon/pen/EwLLbN

    Минусы - браузеру придется компилировать код на лету, это большая потеря в производительности.

    Писать на JSX позволяет babel, а не webpack, поэтому в примере на codepen добавлен скрипт с babel.
    Ответ написан
    Комментировать
  • Способен ли Webpack при сборке менять пути API?

    @SuperOleg39ru
    Front-end разработчик
    Вы можете добавлять пути как параметры при билде.

    В конфиге:
    const API = process.env.api;
    
    module.exports = {
        ...,
        plugins: [
            ...,
            new webpack.DefinePlugin({
                API_URL: JSON.stringify(API)
            })
        ]
    }


    И глобальная переменная API_URL будет доступна в коде вашего проекта.

    Условный конфиг для сборки в вашем package.json:
    {
      "scripts": {
        "build": "webpack --env.api=https://api.url/v1"
      }
    }


    Если надо на лету добавить:
    npm run build -- --env.api=https://api.url/v2
    Ответ написан
    Комментировать
  • Webpack ошибка, Как исправить?

    @SuperOleg39ru
    Front-end разработчик
    var output = [],
    var loaders = {}


    Замените запятую на точку с запятой.
    Ответ написан
    1 комментарий
  • Почему webpack-dev-server не отдаёт бандл для index.hmtl?

    @SuperOleg39ru
    Front-end разработчик
    Webpack-dev-server не пишет собранные файлы на диск, а хранит их в памяти. contentBase говорит только откуда брать статические файлы.

    Надо именно такой адрес - добавьте output.publicPath: '/bundles/'

    Лучше используйте HtmlWebpackPlugin, он сам создаст index.html + добавит ваш index.js на страницу.

    В данный момент ваш index.js находиться виртуально в одной директории с index.html.
    Ответ написан
    Комментировать
  • Как настроить webpack-dev-server с использованием historyApiFallback?

    @SuperOleg39ru
    Front-end разработчик
    Webpack начинает искать файлы по неправильному пути, добавляет в начале /movie/ в вашем скрине.
    Не могу точно сказать в чем проблема, давайте попробуем так:

    Для начала замените output.filename: './dist/main.js' на:
    output: {
            filename: '[name].bundle.js',
            path: path.resolve(__dirname, 'dist')
        }


    А publicPath: '/dist/' на:
    contentBase: path.resolve(__dirname, 'dist')

    И css выделяйте так - new ExtractTextPlugin('[name].css'), output.path уже указывает, что надо выгружать все в dist
    Ответ написан
  • Какой выбрать поддерживаемый boilerplate для ES6/typescript?

    @SuperOleg39ru
    Front-end разработчик
    На самом деле, это как раз тот случай, когда надо изобретать велосипед)
    Все что вы хотите - это просто конфиг вебпака и набор команд для запуска, dev и production.

    Соответственно вам надо установить webpack и webpack-dev-server, показать откуда брать файлы, как обрабатывать (за это отвечают loaders), и куда их собирать - не поленитесь изучить вебпак, можете посмотреть этот скринкаст

    Вот простой пример, я использую этот шаблон для изучения typescript.
    Правда webpack 1 уже deprecated, но разница в конфиге не критичная, так что скринкаст все-равно актуален.

    Нужен ES6 одновременно с typescript - добавляете babel-loader
    Нужен css препроцессор - добавляете loader к этому препроцессору
    Нужен линтинг - устанавливайте eslint и конфиги Airbnb
    Ответ написан
    6 комментариев
  • Что не так с webpack?

    @SuperOleg39ru
    Front-end разработчик
    Удалите babel-loader из конфига, точнее не добавляйте эту настройку в режиме разработки:
    {
            test: /\.(js|jsx)$/,
            exclude: /node_modules/,
            loader: 'babel',
            query: {
              cacheDirectory: true,
              plugins: ['transform-runtime', 'transform-decorators-legacy'],
              presets: ['es2015', 'react', 'stage-0']
            }
          }


    И не ленитесь изучать, как работает webpack, все окажется очень легко и понятно.
    Ответ написан
  • Почему webpack пытается загрузить изображения?

    @SuperOleg39ru
    Front-end разработчик
    Добрый день!

    Документация на html-loader

    By default every local <img src="image.png"> is required (require('./image.png')). You may need to specify loaders for images in your configuration (recommended file-loader or url-loader).


    То есть, атрибут src автоматически считается вызовом изображения.

    Что бы изображение нашлось, во-первых в ваш source добавьте папку с изображениями, во-вторых начинайте пути с '/' (пример src="/img/omron2.png"), и изображения webpack будет искать относительно настройки:
    resolve: {
        root: path.resolve(__dirname, 'source')
    }


    В папку build не нужно добавлять изображения вручную, воспользуйтесь file-loader или url-loader, они позволяют настроить и путь, например папка img внутри build, пример:
    {
        test: /\.(png|jpg|jpeg|gif|svg)$/,
        loader:'file',
        query: {
            name: 'img/[name].[ext]'
        }
    }
    Ответ написан
    Комментировать