1.0.0 • Published 5 years ago

css-files-loader v1.0.0

Weekly downloads
3
License
MIT
Repository
github
Last release
5 years ago

This loader is based on arshtepe's css-file-loader

npm deps

Installation

  npm i --save-dev css-files-loader

How it works

This loader clones files (images, fonts ...) which referenced from css file like url (./image.png).

.selector {
    background: url(./img.png) no-repeat -122px -293px;
    width: 16px;
}

it will be replaced by

.selector {
    background: url([options.publicPath]/[file hash].png) no-repeat -122px -293px; 
    /*For example url(http://localhost/ad31..2a.png)  */
    width: 16px;
}

and [file hash].png will copy to output.path folder and filename replaced by file hash [file hash].png

webpack.config.js

module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [ 'css-loader', 'css-files-loader' ]
      }
    ]
  }
}

Combine with other loaders like sass

Important: css-files-loader must be before sass-loader

...
    rules: [
      {
        test: /\.scss$/,
        use: [ 'css-loader', 'css-files-loader', 'sass-loader' ]
      }
    ]
...

Options

NameTypeDefaultDescription
publicPath{String}output.publicPath or / if options.publicPath and output.publicPath are emptyThis option specifies the public URL of the output directory when referenced in a browser.Must have slash at the end /hello/
outputPath{String}emptyThis option is appended to publicPath. Ex. publicPath/outputPath/filename.ext
hash{Boolean}trueSet to false to disable file name hashing

Usage with options

{
    test: /\.scss$/,
    use: [
        {loader: "css-loader"},
        {
            loader: "css-files-loader", options: {
                publicPath: "/basePath/" ,
                outputPath: "/assets/" , // appended to publicPath (/basePath/assets/)
                hash: false
            }
        },
        {loader: "sass-loader"}
    ]
}