All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
7.1.2 (2024-05-22)
7.1.1 (2024-04-10)
7.1.0 (2024-04-08)
7.0.0 (2024-04-04)
- The
modules.namedExport
option istrue
by default if you enable theesModule
option
Migration guide:
Before:
import style from "./style.css";
console.log(style.myClass);
After:
import * as style from "./style.css";
console.log(style.myClass);
To restore 6.x behavior, please use:
module.exports = {
module: {
rules: [
{
test: /\.css$/i,
loader: "css-loader",
options: {
modules: {
namedExport: false,
exportLocalsConvention: 'as-is',
//
// or, if you prefer camelcase style
//
// exportLocalsConvention: 'camel-case-only'
},
},
},
],
},
};
Typescript migration:
Before:
declare module '*.module.css' {
const classes: { [key: string]: string };
export default classes;
}
After:
declare module '*.module.css' {
const classes: { [key: string]: string };
export = classes;
}
- The
modules.exportLocalsConvention
has the valueas-is
when themodules.namedExport
option istrue
and you don't specify a value - Minimum supported webpack version is
5.27.0
- Minimum supported Node.js version is
18.12.0
- The
modules.namedExports
option works fine with anymodules.exportLocalsConvention
values (f96a110) - Added dashed variants for the
modules.exportLocalsConvention
options (40e1668)
6.11.0 (2024-04-03)
6.10.0 (2024-01-30)
- add
@rspack/core
as an optional peer dependency (#1568) (3924679) - pass the
resourceQuery
andresourceFragment
to theauto
andmode
callback (#1569) (d641c4d) - support named exports with any characters (6f43929)
6.9.1 (2024-01-18)
- css nesting support
@scope
at-rule support
6.9.0 (2024-01-09)
6.8.1 (2023-05-28)
6.8.0 (2023-05-27)
6.7.4 (2023-05-19)
6.7.3 (2022-12-14)
6.7.2 (2022-11-13)
6.7.1 (2022-03-08)
6.7.0 (2022-03-04)
6.6.0 (2022-02-02)
- added the
hashStrategy
option (ca4abce)
6.5.1 (2021-11-03)
6.5.0 (2021-10-26)
- respect
nosources
in thedevtool
option (c60eff2)
6.4.0 (2021-10-09)
- generate more collision resistant for locals (c7db752)
- classes generation for client and server bundling (303a3a1)
6.3.0 (2021-09-18)
- added
[folder]
placeholder (a0dee4f) - added the
exportType
option with'array'
,'string'
and'css-style-sheet'
values (c6d2066)'array'
- the default export isArray
with API forstyle-loader
and other'string'
- the default export isString
you don't needto-string-loader
loader anymore'css-style-sheet'
- the default export is aconstructable stylesheet
, you can useimport sheet from './styles.css' assert { type: 'css' };
like in a browser, more information you can find here
- supported
supports()
andlayer()
functions in@import
at-rules (#1377) (bce2c17) - fix multiple merging multiple
@media
at-rules (#1377) (bce2c17)
6.2.0 (2021-07-19)
- allow the
exportLocalsConvention
option can be a function, useful for named export (#1351) (3c4b357)
6.1.0 (2021-07-17)
6.0.0 (2021-07-14)
- using
~
is deprecated when theesModule
option is enabled (enabled by default) and can be removed from your code (we recommend it) (url(~package/image.png)
->url(package/image.png)
,@import url(~package/style.css)
->@import url(package/style.css)
,composes: import from '~package/one.css';
->composes: import from 'package/one.css';
), but we still support it for historical reasons. Why can you remove it? The loader will first try to resolve@import
/url()
/etc as relative, if it cannot be resolved, the loader will try to resolve@import
/url()
/etc insidenode_modules
or modules directories. file-loader
andurl-loader
are deprecated, please migrate onasset modules
, since v6css-loader
is generatingnew URL(...)
syntax, it enables by default built-inassets modules
, i.e.type: 'asset'
for allurl()
- minimum supported
Node.js
version is12.13.0
- minimum supported
webpack
version is5
, we recommend to update to the latest version for better performance - for
url
andimport
optionsFunction
type was removed in favorObject
type with thefilter
property, i.e. before{ url: () => true }
, now{ url: { filter: () => true } }
and before{ import: () => true }
, now{ import: { filter: () => true } }
- the
modules.compileType
option was removed in favor themodules.mode
option withicss
value, also themodules
option can haveicss
string value new URL()
syntax used forurl()
, only when theesModule
option is enabled (enabled by default), it means you can bundle CSS for libraries- data URI are handling in
url()
, it means you can register loaders for them, example - aliases with
false
value forurl()
now generate empty data URI (i.e.data:0,
), only when theesModule
option is enabled (enabled by default) [ext]
placeholder don't need.
(dot) before for thelocalIdentName
option, i.e. please change.[ext]
on[ext]
(no dot before)[folder]
placeholder was removed without replacement for thelocalIdentName
option, please use a custom function if you need complex logic[emoji]
placeholder was removed without replacement for thelocalIdentName
option, please use a custom function if you need complex logic- the
localIdentHashPrefix
was removed in favor thelocalIdentHashSalt
option
- supported
resolve.byDependency.css
resolve options for@import
- supported
resolve.byDependency.icss
resolve CSS modules and ICSS imports (i.e.composes
/etc) - added
modules.localIdentHashFunction
,modules.localIdentHashDigest
,modules.localIdentHashDigestLength
options for better class hashing controlling - less dependencies
- better performance
- fixed circular
@import
- we strongly recommend not to add
.css
toresolve.extensions
, it reduces performance and in most cases it is simply not necessary, alternative you can set resolve options by dependency
5.2.7 (2021-07-13)
- fix crash when source map is unavailable with external URL in
[@import](https://github.com/import)
(bb76fe4)
5.2.6 (2021-05-24)
5.2.5 (2021-05-20)
5.2.4 (2021-04-19)
5.2.3 (2021-04-19)
- improve performance
5.2.2 (2021-04-16)
- avoid escape nonASCII characters in local names (0722733)
5.2.1 (2021-04-09)
5.2.0 (2021-03-24)
5.1.4 (2021-03-24)
5.1.3 (2021-03-15)
- the
auto
option works using inline module syntax (#1274) (1db2f4d) - ident generation for CSS modules using inline module syntax (#1274) (1db2f4d)
5.1.2 (2021-03-10)
- handling
@import
with spaces before and after and any extensions (#1272) (0c47cf7) - inline loader syntax in
@import
and modules (3f49ed0)
5.1.1 (2021-03-01)
5.1.0 (2021-02-25)
5.0.2 (2021-02-08)
5.0.1 (2020-11-04)
5.0.0 (2020-10-13)
- migrate on PostCSS 8
- runtime doesn't contain source maps code without
sourceMap: true
- returned value from the
getLocalIdent
escapes by default, theexportName
value is always unescaped - Auto enable icss modules for all files for which
/\.icss\.\w+$/i
(themodules.compileType
option isicss
) [emoji]
placeholder was deprecatedicss
option was removed (it was deprecated previously)
- allow named exports to have underscores in names (#1209) (747d62b)
- hide warning when you don't need handle
url()
/@import
(#1195) (dd52931) - improve error message (52412f6)
- reduce runtime (9f974be)
- add fallback if custom getLocalIdent returns
null
/undefined
(#1193) (0f95841)
4.3.0 (2020-09-08)
- line breaks in
url
function (88b8ddc)
4.2.2 (2020-08-24)
- source maps generation, source from source maps are now relative to
compiler.context
and usewebpack://
protocol (#1169) (fb5c53d)
4.2.1 (2020-08-06)
- regression with the
exportOnlyLocals
option, nowlocals
are not exported under thelocals
name, it was big regression, we apologize for that (24c0a12)
4.2.0 (2020-07-31)
4.1.1 (2020-07-30)
4.1.0 (2020-07-29)
4.0.0 (2020-07-25)
- minimum required
Node.js
version is10.13.0
- minimum required
webpack
version is4.27.0
- the
esModule
option istrue
by default - default value of the
sourceMap
option depends on thedevtool
option icss
plugin disable by default, you need to setup themodules
option to enable it- the
modules
option istrue
by default for all files matching/\.module\.\w+$/i.test(filename)
regular expression,module.auto
istrue
by default - the
modules.context
option was renamed to themodules.localIdentContext
option - default the
modules.localIdentContext
value iscompiler.context
for themodule.getLocalIdent
option - the
modules.hashPrefix
option was renamed to themodules.localIdentHashPrefix
option - the
localsConvention
option was moved and renamed to themodules.exportLocalsConvention
option - the
getLocalIndent
option should be alwaysFunction
and should always returnString
value - the
onlyLocals
option was moved and renamed to themodules.exportOnlyLocals
option - function arguments of the
import
option were changed, it is nowfunction(url, media, resourcePath) {}
- inline syntax was changed, please write
~
before the file request, i.e. rewriteurl(~!!loader!package/img.png)
tourl(!!loader!~package/img.png)
url()
resolving algorithm now handles absolute paths instead of ignoring them. This can break builds which relied on absolute paths to refer to the asset directory. (bc19ddd)
@value
supports importingurl()
(#1126) (7f49a0a)- improve
url()
resolving algorithm to support more path types (bc19ddd) - named export for locals (#1108) (d139ec1)
- respected the
style
field from package.json (#1099) (edf5347) - support
file:
protocol (5604205) - support server relative URLs
- resolution algorithm, you don't need
~
inside packages innode_modules
(76f1480)
3.6.0 (2020-06-13)
3.5.3 (2020-04-24)
- add file from an error to file dependencies (841423f)
- avoid query string in source maps (#1082) (f64de13)
3.5.2 (2020-04-10)
3.5.1 (2020-04-07)
3.5.0 (2020-04-06)
- accept semver compatible postcss AST (#1049) (14c4faa)
- allow to determinate css modules using the
modules.auto
option, please look at an example of how you can simplify the configuration. (#1067) (c673cf4) - the
modules.exportGlobals
option for export global classes and ids (#1069) (519e5f4) - the
modules.mode
option may be a function (#1065) (0d8ac3b)
3.4.2 (2020-01-10)
3.4.1 (2020-01-03)
- do not output
undefined
when sourceRoot is unavailable (#1036) (ded2a79) - don't output invalid es5 code when locals do not exists (#1035) (b60e62a)
3.4.0 (2019-12-17)
3.3.2 (2019-12-12)
- logic for order and media queries for imports (1fb5134)
3.3.1 (2019-12-12)
- better handling url functions and an url in
@import
at-rules - reduce count of
require
(#1014) (e091d27)
3.3.0 (2019-12-09)
- do not crash when an assert return
null
orundefined
(#1006) (6769783) - reduce count of
require
(#1004) (80e9662)
3.2.1 (2019-12-02)
- add an additional space after the escape sequence (#998) (0961304)
- compatibility with ES modules syntax and hash in
url
function (#1001) (8f4d6f5)
3.2.0 (2019-08-06)
3.1.0 (2019-07-18)
- converting all (including reserved and control) filesystem characters to
-
(it was regression in3.0.0
version) (#972) (f51859b) - default context should be undefined instead of null (#965) (9c32885)
- allow
modules.getLocalIdent
to return a falsy value (#963) (9c3571c) - improved validation error messages (65e4fc0)
3.0.0 (2019-06-11)
- avoid the "from" argument must be of type string error (#908) (e5dfd23)
- invert
Function
behavior forurl
andimport
options (#939) (e9eb5ad) - properly export locals with escaped characters (#917) (a0efcda)
- property handle non css characters in localIdentName (#920) (d3a0a3c)
- modules options now accepts object config (#937) (1d7a464)
- support
@value
at-rule in selectors (#941) (05a42e2)
- minimum required nodejs version is 8.9.0
@value
at rules now support inselector
, recommends checking all@values
at-rule usage (hint: you can add prefix to all@value
at-rules, for example@value v-foo: black;
or@value m-foo: screen and (max-width: 12450px)
, and then do upgrade)- invert
{Function}
behavior forurl
andimport
options (need returntrue
when you want handleurl
/@import
and returnfalse
if not) camelCase
option was remove in favorlocalsConvention
option, also it is accept only{String}
value (usecamelCase
value if you previously value wastrue
andasIs
if you previously value wasfalse
)exportOnlyLocals
option was remove in favoronlyLocals
optionmodules
option now can be{Object}
and allow to setupCSS Modules
options:localIdentName
option was removed in favormodules.localIdentName
optioncontext
option was remove in favormodules.context
optionhashPrefix
option was removed in favormodules.hashPrefix
optiongetLocalIdent
option was removed in favormodules.getLocalIdent
optionlocalIdentRegExp
option was removed in favormodules.localIdentRegExp
option
2.1.1 (2019-03-07)
- do not break selector with escaping (#896) (0ba8c66)
- source map generation when
sourceRoot
is present (#901) (e9ce745) - sourcemap generating when previous loader pass sourcemap as string (#905) (3797e4d)
2.1.0 (2018-12-25)
2.0.2 (2018-12-21)
2.0.1 (2018-12-14)
- safe checking if params are present for at rule (#871) (a88fed1)
getLocalIdent
now acceptsfalse
value (#865) (1825e8a)
2.0.0 (2018-12-07)
- broken unucode characters (#850) (f599c70)
- correctly processing
urls()
with?#hash
(#803) (417d105) - don't break loader on invalid or not exists url or import token (#827) (9e52d26)
- don't duplicate import with same media in different case (#819) (9f66e33)
- emit warnings on broken
import
at-rules (#806) (4bdf08b) - handle uppercase
URL
inimport
at-rules (#818) (3ebdcd5) - inconsistent generate class names for css modules on difference os (#812) (0bdf9b7)
- reduce number of
require
forurls()
(#854) (3338656) - support deduplication of string module ids (optimization.namedModules) (#789) (e3bb83a)
- support module resolution in
composes
(#845) (453248f) - same
urls()
resolving logic formodules
(local
andglobal
) and without modules (#843) (fdcf687)
- allow to disable css modules and disable their by default (#842) (889dc7f)
- disable
import
option doesn't affect oncomposes
(#822) (f9aa73c) - allow to filter
urls
(#856) (5e702e7) - allow to filter
import
at-rules (#857) (5e6034c) - emit warning on invalid
urls()
(#832) (da95db8) - added
exportOnlyLocals
option (#824) (e9327c0) - reuse
postcss
ast from other loaders (i.epostcss-loader
) (#840) (1dad1fb) - schema options (b97d997)
- resolving logic for
url()
andimport
at-rules works the same everywhere, it does not matter whether css modules are enabled (withglobal
andlocal
module) or not. Examples -url('image.png')
asrequire('./image.png')
,url('./image.png')
asrequire('./image.png')
,url('~module/image.png')
asrequire('module/image.png')
. - by default css modules are disabled (now
modules: false
disable all css modules features), you can return old behaviour change this onmodules: 'global'
css-loader/locals
was dropped in favorexportOnlyLocals
optionimport
option only affect onimport
at-rules and doesn't affect oncomposes
declarations- invalid
@import
at rules now emit warnings - use
postcss@7
1.0.1 (2018-10-29)
1.0.0 (2018-07-06)
- remove
minimize
option, usepostcss-loader
withcssnano
or useoptimize-cssnano-plugin
plugin - remove
module
option, usemodules
option instead - remove
camelcase
option, usecamelCase
option instead - remove
root
option, usepostcss-loader
withpostcss-url
plugin - remove
alias
option, useresolve.alias
feature or usepostcss-loader
withpostcss-url
plugin - update
postcss
to6
version - minimum require
nodejs
version is6.9
- minimum require
webpack
version is4
0.28.11 (2018-03-16)
0.28.10 (2018-02-22)
0.28.9 (2018-01-17)
0.28.8 (2018-01-05)
- loader: correctly check if source map is
undefined
(#641) (0dccfa9) - proper URL escaping and wrapping (
url()
) (#627) (8897d44)
0.28.7 (2017-08-30)
0.28.6 (2017-08-30)
0.28.5 (2017-08-17)
- match mutliple dashes (
options.camelCase
) (#556) (1fee601) - stricter
[@import](https://github.com/import)
tolerance (#593) (2e4ec09)
0.28.4 (2017-05-30)
0.28.3 (2017-05-25)
0.28.2 (2017-05-22)
0.28.1 (2017-05-02)
- allow to specify a full hostname as a root URL (#521) (06d27a1)
- case insensitivity of @import (#514) (de4356b)
- don't handle empty @import and url() (#513) (868fc94)
- imported variables are replaced in exports if followed by a comma (#504) (956bad7)
- loader now correctly handles
url
with space(s) (#495) (534ea55) - url with a trailing space is now handled correctly (#494) (e1ec4f2)
- use
btoa
insteadBuffer
(#501) (fbb0714)