mirror of https://github.com/webpack/webpack.git
feat(css): redirect named locals to default export when named export is disabled
This commit is contained in:
commit
3361a5e5f5
|
|
@ -1030,6 +1030,11 @@ class CssParser extends Parser {
|
||||||
|
|
||||||
module.buildInfo.strict = true;
|
module.buildInfo.strict = true;
|
||||||
module.buildMeta.exportsType = this.namedExports ? "namespace" : "default";
|
module.buildMeta.exportsType = this.namedExports ? "namespace" : "default";
|
||||||
|
|
||||||
|
if (!this.namedExports) {
|
||||||
|
module.buildMeta.defaultObject = "redirect";
|
||||||
|
}
|
||||||
|
|
||||||
module.addDependency(new StaticExportsDependency([], true));
|
module.addDependency(new StaticExportsDependency([], true));
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
import * as style1 from "./style.module.css?namespace";
|
||||||
|
import style2 from "./style.module.css?default";
|
||||||
|
import { foo } from "./style.module.css?named";
|
||||||
|
|
||||||
|
it("should able to import with default and named exports", () => {
|
||||||
|
expect(style1.default).toEqual(nsObj({ foo: '-_style_module_css_namespace-foo' }));
|
||||||
|
expect(style1.foo).toEqual("-_style_module_css_namespace-foo");
|
||||||
|
expect(style2).toEqual(nsObj({ foo: '-_style_module_css_default-foo' }));
|
||||||
|
expect(foo).toEqual("-_style_module_css_named-foo");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should able to import with different default and namex dynamic export", (done) => {
|
||||||
|
import("./style.module.css?namespace").then((style1) => {
|
||||||
|
expect(style1.default).toEqual(nsObj({ foo: '-_style_module_css_namespace-foo' }));
|
||||||
|
expect(style1.foo).toEqual('-_style_module_css_namespace-foo');
|
||||||
|
|
||||||
|
done();
|
||||||
|
}, done)
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
.foo {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
/** @type {import("../../../../").Configuration} */
|
||||||
|
module.exports = {
|
||||||
|
target: "node",
|
||||||
|
mode: "development",
|
||||||
|
devtool: false,
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.css/,
|
||||||
|
parser: {
|
||||||
|
namedExports: false
|
||||||
|
},
|
||||||
|
type: "css/module"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
experiments: {
|
||||||
|
css: true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -15,7 +15,10 @@ it("should able to import with different namedExports (async)", (done) => {
|
||||||
import("./style.module.css?named"),
|
import("./style.module.css?named"),
|
||||||
]).then(([style1, style2, style3]) => {
|
]).then(([style1, style2, style3]) => {
|
||||||
expect(style1).toEqual(nsObj({ class: '-_style_module_css-class' }));
|
expect(style1).toEqual(nsObj({ class: '-_style_module_css-class' }));
|
||||||
expect(style2).toEqual(nsObj({ default: nsObj({ class: '-_style_module_css_default-class' }) }));
|
expect(style2).toEqual(nsObj({
|
||||||
|
class: "-_style_module_css_default-class",
|
||||||
|
default: nsObj({ class: '-_style_module_css_default-class' })
|
||||||
|
}));
|
||||||
expect(style3).toEqual(nsObj({ class: '-_style_module_css_named-class' }));
|
expect(style3).toEqual(nsObj({ class: '-_style_module_css_named-class' }));
|
||||||
done()
|
done()
|
||||||
}, done)
|
}, done)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue