Skip to content

Webpack loader that resolves relative paths in url() statements based on the original source file

Notifications You must be signed in to change notification settings

MightyPork/resolve-url-loader

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Resolve URL Loader

A webpack loader that rewrites relative paths in url() statements based on the original source file.

Why?

TL;DR Making Sass work with a feature based project structure

With webpack you can import a .scss file (or some other compile-to-css file) and have a loader take care of the transpilation. With Sass (at least) this file can include a whole tree of source files into a single output.

We can imagine a virtual .css file at the location the original .scss import. Webpack expects any assets found in this CSS to be relative to the original imported file.

For projects with a feature based structure this will be a problem, since you will want to co-locate your assets with your .scss partials.

Example - webpack imports index.scss which includes feature foo.

files content
src /
  index.scss @import features/foo
  features /
    _foo.scss url(bar.png)
    bar.png

Intuatively we want the assets in partial _foo.scss relative to the partial, meaning url(bar.png).

However webpack's css-loader will encounter url(bar.png) and expect to find src/bar.png. This is not the correct location and the build will fail.

Thankfully resolve-url-loader provides the "url rewriting" that Sass is missing. Use it after the transpiler (such as sass-loader). It makes use of the source-map to find the original source file and rewrite url() statements.

In our example it rewrites url(bar.png) to url(features/bar.png) as required.

Getting started

See resolve-url-loader package.

Other stuff

See test-my-cli package for a functional programming framework for cli-testing. An unpublished work in progress.

See resolve-url-loader-filesearch package for the now defunct file search "magic" from resolve-url-loader@<3.0.0. This is currently unpublished. It needs to be adapted as a join function to be useful to anyone.

About

Webpack loader that resolves relative paths in url() statements based on the original source file

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%