Sha256: c7c419f19dde74751d5549aa94ff8d58d2ad24429575d2034e2abf9854f46549

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const devServer = require('../dev_server')
const { nodeEnv } = require('../env')

const isProduction = nodeEnv === 'production'
const inDevServer = process.argv.find(v => v.includes('webpack-dev-server'))
const isHMR = inDevServer && (devServer && devServer.hmr)
const extractCSS = !isHMR || isProduction

const styleLoader = {
  loader: 'style-loader',
  options: {
    hmr: isHMR,
    sourceMap: true
  }
}

const getStyleRule = (test, modules = false, preprocessors = []) => {
  const use = [
    {
      loader: 'css-loader',
      options: {
        sourceMap: true,
        importLoaders: 2,
        localIdentName: '[name]__[local]___[hash:base64:5]',
        modules
      }
    },
    {
      loader: 'postcss-loader',
      options: {
        sourceMap: true
      }
    },
    ...preprocessors
  ]

  const options = modules ? { include: /\.module\.[a-z]+$/ } : { exclude: /\.module\.[a-z]+$/ }

  if (extractCSS) {
    use.unshift(MiniCssExtractPlugin.loader)
  } else {
    use.unshift(styleLoader)
  }

  return Object.assign({}, { test, use }, options)
}

module.exports = getStyleRule

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
webpacker-4.0.0.pre.3 package/utils/get_style_rule.js