What is the best method for preventing a specific .CSS file from being included in the output when using

foo.js
foo.css
bar.css

foo.js contains foo.css.
Also, foo.css includes bar.css.

After bundling, I end up with bar.css which I want to exclude. I am using MiniCssExtractPlugin to separate css and js files.

Methods I have attempted:

  • IgnorePlugin. It successfully removes bar.css, but then MiniCssExtractPlugin fails due to it.
  • null-loader for bar.css (tried using test with regexp and include/exclude). Unfortunately, it did not work as expected (maybe something was missed).
  • Two different rules within oneOf for /\.css$/: one with null-loader and the other for everything else.

Despite these attempts, none were successful.

What is the correct approach to resolve this issue?

My configuration in webpack.config.js

const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const webpack = require('webpack');

module.exports = {
  plugins: [
    new MiniCssExtractPlugin({ }),
    new webpack.IgnorePlugin(/bar\.css$/)
  ],
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          {
            loader: MiniCssExtractPlugin.loader,
          },
          'css-loader',
        ],
      },
    ],
  },
};

Here's the error output

ERROR in ./src/foo.css
Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js):
Error: Cannot find module '-!../node_modules/css-loader/dist/cjs.js!./bar.css'

It appears that MiniCssExtractPlugin explicitly utilizes css-loader, making it challenging to skip module loading through configuration.

Answer №1

To resolve the issue, you can utilize the NormalModuleReplacementPlugin in order to substitute a problematic file with an empty one.

const StyleLintPlugin = require('stylelint-webpack-plugin');
const webpack = require('webpack');

const fileToReplace = /problematic_style\.css$/;
module.exports = {
    plugins: [
        new StyleLintPlugin({}),
        new webpack.NormalModuleReplacementPlugin(
            fileToReplace,
            '!./empty.css'
        )
    ],
    module: {
        rules: [
            {
                test: /\.css$/,
                use: [StyleLintPlugin.loader, 'css-loader']
            },
        ],
    },
};

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

steps for making a dropdown search bar

I am currently working on integrating a search form into my navigation bar. My goal is to have a small magnifying glass icon in the navigation bar, which, when clicked, will reveal a dropdown search form (similar to how it's done on this site - ). I&a ...

Issues with Javascript Arrays not adding objects with duplicate values

When objects have arrays with the same values, only one of them is considered. For example: data[2018][2][25] <-- this one gets ignored by the object data[2018][2][22] Sample Code: var date = new Date(); var data = {}; <?php $eventsNum = 3> &l ...

What is the best way to conceal a Material UI button with CSS?

For my TODO react app, I am using a Material UI button. My goal is to create a form with an input field and a submit button, but I want the submit button to be invisible so that users think the form submits when they press the "Return" key. import { Tex ...

The navigation bar appears to have a different width on mobile view specifically on one page

I created a mobile view navigation that appears correctly on two out of three pages. It spans the full 100% width as intended, but on one page it extends beyond that and causes the layout to look distorted due to the larger navigation bar. I'm not sur ...

What are the steps to resolve the DOMException error "Failed to execute 'open' on 'XMLHttpRequest': Invalid URL" in Angular HttpClient when making requests to a third-party server or API?

I am encountering the following issue: DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL while trying to perform a GET request to debounce.com import{HttpClient} from '@angular/common/http'; export {T ...

What is the best way to determine the dimensions of a KonvaJs Stage in order to correctly pass them as the height/width parameters for the toImage function

Currently, I am using KonvaJs version 3.2.4 to work with the toImage function of the Stage Class. It seems that by default, toImage() only captures an image of the visible stage area. This is why there is a need to provide starting coordinates, height, and ...

React JS: You must define 'Message' in order to avoid the react/jsx-no-undef error

As a novice learner in React JS, I am currently working on developing a messaging web application. However, as I was writing my code, I encountered the following error: Failed to compile. ./src/App.js Line 41:17: 'Message' is not defined react/j ...

Which framework should be used: client-side or server-side?

I am working on a project similar to craiglist, where users can post announcements for everyday items like cars and flats. I have already developed a significant portion of the backend using a RESTful API in three-tier architecture with Java, connecting to ...

Removing a row by its id in VueJs using the splice method

After successfully deleting an item from the database, I am facing an issue where the item is not being removed from the list. I understand that I should use the index to splice the item from the list. However, using the index means I cannot pass the it ...

Display information from a JSON file using Vue.js

Hello, I am currently attempting to display data from a JSON file using Vue.js. Below is my Vue file: <template> <div> <div class="card"> <div class="card-header"> <h4 class="card-title" ...

"Incorporate keyframes to create a mouseleave event with a distinctive reverse fade

After posing a similar question a few days back, I find myself encountering yet another hurdle in my project. The task at hand is to switch the background image when hovering over a button with a fade-in effect using @keyframes. However, I'm stuck bec ...

The transformation from CSS and HTML to RoR resulted in sprites being converted into mysterious black boxes

Previously, this site was functioning fine without Ruby on Rails. However, after moving the code to Rails, a strange issue has arisen where the hover images turn black when the mouse is placed over them. // Place all the styles related to the home control ...

CSS modified after opening a modal dialog that has loaded external HTML content

Within my ASP.NET MVC project, I am utilizing a tab wizard. On one of the tabs, I trigger a modal dialog by loading HTML content from an external API. However, once I close the wizard and navigate to the next tab, the table style (specifically border color ...

Issues with templates not loading properly upon navigation

I'm currently in the process of building a website, and I've encountered a basic issue. Every time I click on different routes from the homepage, I keep getting a 404 error. I can't seem to pinpoint what's wrong with the code at this ea ...

Is there a way to keep the modal window open in React without it automatically closing?

I have been working on a modal window implementation in React. I defined a state variable called modalbool to control the visibility of the modal window. The modal window is displayed only when modalbool is set to true. Additionally, I created a parent com ...

An error message is displayed when attempting to retrieve a json response

After implementing my flask app, I noticed that the following code snippet is being returned: return json.dumps({'status': 'OK','url': 'www.blahg.com'}) Upon inspecting my javascript code, I found it to be structur ...

I am attempting to monitor the addliquidity event on Uniswap's router02

I am currently attempting to monitor addliquidity events in order to extract data on newly added pairs const Web3 = require('web3'); const NODE_URL = "https://mainnet.infura.io/v3/d3c5832256754c85be86b4c97de2d3d3" const web3 = new We ...

Incorporate dynamic JavaScript content within an HTML document

Currently, I am facing an issue with a webpage that I need to load in order to extract some information. Using HttpClient and Jsoup worked well for loading the majority of the content on the page. However, my problem lies with certain elements that are onl ...

turn on labels for every individual cell in the bar graph

I'm working on setting labels of A, B, and C for each bar chart cell to display all my data on the chart. I attempted using data.addColumn('string', 'Alphabets'); but it's not functioning as expected. It seems like a simple ta ...

An issue has occurred in Safari/IE because Error x[i].getElementsByTagName("image")[1] is not defined

I have been struggling to incorporate an RSS feed into my HTML page. It seems to function properly on iPad, iPhone, and Chrome, but encounters issues with Internet Explorer and Safari. Specifically, I am receiving an error message that states: x[i].getEle ...