Skip to content

webpack plugin to convert url(...) in css to relative path

Notifications You must be signed in to change notification settings

yibn2008/css-url-relative-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8745c81 · Nov 18, 2021

History

14 Commits
Jun 10, 2021
Sep 23, 2020
Jun 4, 2018
Jun 4, 2018
Jun 4, 2018
Jun 10, 2021
Nov 18, 2021
Jun 10, 2021

Repository files navigation

css-url-relative-plugin

Webpack plugin to convert css url(...) to relative path (only support webpack >= 4).

This plugin aims to solve the problem that webpack generate incorrect relative path when your publicPath is empty (defaults to '') or './', it will replace incorrect path in css url(...)s with correct relative path at end of webpack compilation process.

For example:

/*
 * /project
 * |- dist
 * |  |- xxx.hash.png
 * |  |- page
 * |     |- index.hash.css
 * |- src
 *    |- img
 *    |  |- xxx.png
 *    |- page
 *       |- index.css
 */
/* page/index.css (original css code you write) */
body {
  background: url(../img/xxx.png)
}

/* page/index.hash.css (webpack generated) */
body {
  /*
   * css-url-relative-plugin will generate: url(../xxx.hash.png)
   */
  background: url(xxx.hash.png)
}

As you can see, the image path in url(...) is relative to output dir, not the css file.

Usage

const CssUrlRelativePlugin = require('css-url-relative-plugin')

module.exports = {
  ...
  plugins: [
    new CssUrlRelativePlugin(/* options */)
  ]
}

Notice

please notice that, this plugin doesn't support SourceMap, if you want this feature, please send me the pull request.

Options

root

Like root option in css-loader, it's the path to resolve URLs.

LICENSE

MIT