This loader is based on arshtepe's css-file-loader
[![npm][npm]][npm-url] [![deps][deps]][deps-url]
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
Name | Type | Default | Description |
---|---|---|---|
publicPath |
{String} |
output.publicPath or / if options.publicPath and output.publicPath are empty |
This option specifies the public URL of the output directory when referenced in a browser.Must have slash at the end /hello/
|
outputPath |
{String} |
empty | This option is appended to publicPath. Ex. publicPath/outputPath/filename.ext
|
hash |
{Boolean} |
true | Set 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"}
]
}