Как преобразовать эти конфиги Webpack в Webpacker - PullRequest
0 голосов
/ 19 декабря 2018

Я работаю над проектом с открытым исходным кодом в Ruby on Rails, который использует Webpacker и React.

Этот проект в настоящее время представляет следующие загрузчики для конфигурации:

const environment = require('./environment').toWebpackConfig()

const customRules = {
  module: {
    rules: [
      {
        ...
      },
      {
        ...
      },
      {
        test: /(\.css|\.scss|\.sass)$/,
        loader: 'style-loader!css-loader!sass-loader?modules&localIdentName=[name]---[local]---[hash:base64:5]'
      }
    ]
  }
}

module.exports = Object.assign({}, environment, customRules)

Обратите внимание, что этов основном переопределяет любую конфигурацию, которую генерирует Webpacker, что, на мой взгляд, является неправильным подходом.

Я хотел бы настроить эти загрузчики стилей перед вызовом .toWebpackConfig().До сих пор я просто удалял все связанные загрузчики, включенные по умолчанию, и добавлял это вручную ...

const { environment } = require('@rails/webpacker')

environment.loaders.delete('css')
environment.loaders.delete('moduleCss')
environment.loaders.delete('sass')
environment.loaders.delete('moduleSass')

environment.loaders.append('style', {
  test: /(\.css|\.scss|\.sass)$/,
  loader: 'style-loader!css-loader!sass-loader?modules&localIdentName=[name]---[local]---[hash:base64:5]'
})

module.exports = environment.toWebpackConfig()

И хотя это работает, как и ожидалось, я думаю, что это довольно хакерское решение.

Есть ли лучший способ установить эти параметры: style-loader!css-loader!sass-loader?modules&localIdentName=[name]---[local]---[hash:base64:5] без необходимости удалять загрузчики по умолчанию?

Вот оригинальный PR в Github на тот случай, если кто-то захочетпопробуй сам

...