Closed
Description
css-loader
≥ 4.0.0 gives Error: Can't resolve 'bar.scss'
when I try to @import "bar.scss"
. It works when the extension is .css
but not when it’s .scss
. I bisected this to commit edf5347 (#1099). The problem is triggered by the restrictions: [/\.css$/i]
setting that was hard-coded here:
Lines 50 to 56 in edf5347
- Operating System: NixOS 20.09
- Node Version: 14.7.0
- NPM Version: 6.14.7
- webpack Version: 4.44.1
- css-loader Version: 4.2.1
Expected Behavior
With css-loader 3.6.0:
$ npx webpack
Hash: 18aeb4131231a0da692b
Version: webpack 4.44.1
Time: 122ms
Built at: 08/12/2020 4:28:49 PM
Asset Size Chunks Chunk Names
main.js 8.05 KiB main [emitted] main
Entrypoint main = main.js
[./foo.scss] 396 bytes {main} [built]
[./node_modules/css-loader/dist/cjs.js!./bar.scss] 278 bytes {main} [built]
+ 1 hidden module
Done in 0.46s.
Actual Behavior
With css-loader ≥ 4.0.0:
$ npx webpack
Hash: 8a377e383c6ebf971c58
Version: webpack 4.44.1
Time: 120ms
Built at: 08/12/2020 4:30:02 PM
Asset Size Chunks Chunk Names
main.js 6.36 KiB main [emitted] main
Entrypoint main = main.js
[./foo.scss] 2.58 KiB {main} [built] [failed] [1 error]
ERROR in ./foo.scss
Module build failed (from ./node_modules/css-loader/dist/cjs.js):
Error: Can't resolve 'bar.scss' in '/tmp/b'
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:209:21
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/tmp/b/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
at /tmp/b/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js:44:7
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/tmp/b/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/tmp/b/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)
at /tmp/b/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:67:43
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/tmp/b/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:26:1)
at /tmp/b/node_modules/enhanced-resolve/lib/ModuleKindPlugin.js:30:40
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/tmp/b/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/tmp/b/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
at /tmp/b/node_modules/enhanced-resolve/lib/forEachBail.js:30:14
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/tmp/b/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
at /tmp/b/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js:44:7
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/tmp/b/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/tmp/b/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)
at /tmp/b/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:67:43
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/tmp/b/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:14:1)
at /tmp/b/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/tmp/b/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)
at /tmp/b/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:67:43
Code
// webpack.config.js
module.exports = {
mode: "development",
entry: "./foo.scss",
module: {
rules: [{ test: /\.s?css$/, use: "css-loader" }],
},
};
/* foo.scss */
@import "bar.scss"
/* bar.scss */
html {
background: red;
}
How Do We Reproduce?
Create the three files above and run npm i webpack webpack-cli css-loader; npx webpack
.
Metadata
Metadata
Assignees
Labels
No labels