Files
bun.sh/test/bundler/css/css-modules.test.ts
2025-03-26 21:45:22 -07:00

103 lines
2.4 KiB
TypeScript

import { itBundled } from "../expectBundled";
describe("css", () => {
itBundled("css-module/GlobalPseudoFunction", {
files: {
"index.module.css": /* css */ `
:global(.foo) {
color: red;
}
`,
},
outdir: "/out",
entryPoints: ["/index.module.css"],
onAfterBundle(api) {
api.expectFile("/out/index.module.css").toEqualIgnoringWhitespace(`
/* index.module.css */
.foo {
color: red;
}
`);
},
});
itBundled("css-module/BundleTwoFilesWithoutCodeSplitting", {
files: {
"/foo-entry.js": `
import styles from './common.module.css'
console.log(styles)
`,
"/bar-entry.js": `
import styles from './common.module.css'
console.log(styles)
`,
"/common.module.css": `.baz { color: red }`,
},
entryPoints: ["/foo-entry.js", "/bar-entry.js"],
outdir: "/out",
onAfterBundle(api) {
api.expectFile("/out/foo-entry.js").toMatchInlineSnapshot(`
"// common.module.css
var common_module_default = {
baz: "baz_I7o34g"
};
// foo-entry.js
console.log(common_module_default);
"
`);
api.expectFile("/out/bar-entry.js").toMatchInlineSnapshot(`
"// common.module.css
var common_module_default = {
baz: "baz_I7o34g"
};
// bar-entry.js
console.log(common_module_default);
"
`);
},
});
itBundled("css-module/BundleTwoFilesWithCodeSplitting", {
files: {
"/foo-entry.js": `
import styles from './common.module.css'
console.log(styles)
`,
"/bar-entry.js": `
import styles from './common.module.css'
console.log(styles)
`,
"/common.module.css": `.baz { color: red }`,
},
entryPoints: ["/foo-entry.js", "/bar-entry.js"],
splitting: true,
outdir: "/out",
onAfterBundle(api) {
api.expectFile("/out/foo-entry.js").toMatchInlineSnapshot(`
"// common.module.css
var common_module_default = {
baz: "baz_I7o34g"
};
// foo-entry.js
console.log(common_module_default);
"
`);
api.expectFile("/out/bar-entry.js").toMatchInlineSnapshot(`
"// common.module.css
var common_module_default = {
baz: "baz_I7o34g"
};
// bar-entry.js
console.log(common_module_default);
"
`);
},
});
});