Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / packages / pack / webpack / css.loader.js
blobcbb6a0f255c1c73be3d7d61bbf387fb918296209
1 const MiniCssExtractPlugin = require('mini-css-extract-plugin');
3 const RAW_TEXT = /.*\.theme\.css|\.raw\.scss$/;
5 const handleUrlResolve = (url) => {
6 // Transparent image, included through write
7 if (url.includes('host.png')) {
8 return false;
10 return true;
13 module.exports = ({ browserslist, logical, webpackOnCaffeine }) => {
14 const sassLoaders = [
16 loader: require.resolve('css-loader'),
17 options: {
18 url: { filter: handleUrlResolve },
22 loader: require.resolve('postcss-loader'),
23 options: {
24 postcssOptions: {
25 plugins: [
26 require('autoprefixer')({
27 overrideBrowserslist: browserslist,
28 flexbox: 'no-2009',
29 }),
30 require('postcss-color-functional-notation')(),
31 !logical && require('postcss-logical')(),
32 ].filter(Boolean),
36 !webpackOnCaffeine && {
37 loader: require.resolve('resolve-url-loader'),
40 loader: require.resolve('sass-loader'),
41 options: webpackOnCaffeine
42 ? {
43 implementation: require('sass'),
44 sassOptions: {
45 outputStyle: 'compressed',
48 : {},
50 ].filter(Boolean);
52 const miniLoader = {
53 loader: MiniCssExtractPlugin.loader,
56 return [
58 test: /\.css$/,
59 exclude: /.*\.theme\.css/,
60 use: [
61 miniLoader,
63 loader: require.resolve('css-loader'),
64 options: {
65 importLoaders: 1,
66 url: { filter: handleUrlResolve },
70 sideEffects: true,
73 test: /\.scss$/,
74 exclude: RAW_TEXT,
75 use: [miniLoader, ...sassLoaders],
76 sideEffects: true,
79 test: RAW_TEXT,
80 // Prevent loading the theme in <style>, we want to load it as a raw string
81 use: [...sassLoaders],