├── .cspell.json ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .github ├── CODEOWNERS ├── CONTRIBUTING.md ├── FUNDING.yml ├── ISSUE_TEMPLATE.md ├── ISSUE_TEMPLATE │ ├── BUG.md │ ├── DOCS.md │ ├── FEATURE.md │ ├── MODIFICATION.md │ └── SUPPORT.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── dependency-review.yml │ └── nodejs.yml ├── .gitignore ├── .husky ├── commit-msg └── pre-commit ├── .prettierignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── babel.config.js ├── commitlint.config.js ├── jest.config.js ├── lint-staged.config.js ├── package-lock.json ├── package.json ├── setupTest.js ├── src ├── hmr │ ├── hotModuleReplacement.js │ └── normalize-url.js ├── index.js ├── loader-options.json ├── loader.js ├── plugin-options.json └── utils.js ├── test ├── HMR.test.js ├── TestCache.test.js ├── TestCases.test.js ├── TestMemoryFS.test.js ├── __snapshots__ │ ├── HMR.test.js.snap │ ├── attributes-option.test.js.snap │ ├── emit-option.test.js.snap │ ├── insert-option.test.js.snap │ ├── linkTag-option.test.js.snap │ ├── nonce.test.js.snap │ ├── runtime-option.test.js.snap │ ├── validate-loader-options.test.js.snap │ └── validate-plugin-options.test.js.snap ├── api.test.js ├── attributes-option.test.js ├── cases │ ├── asset-modules │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── at-charset │ │ ├── a.css │ │ ├── aa.css │ │ ├── ab.css │ │ ├── ac.css │ │ ├── ad.css │ │ ├── ae.css │ │ ├── b.css │ │ ├── ba.css │ │ ├── bb.css │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ └── webpack.config.js │ ├── at-import-external-with-media │ │ ├── a.css │ │ ├── b.css │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ └── webpack.config.js │ ├── at-import-in-the-entry │ │ ├── a.css │ │ ├── b.css │ │ ├── expected │ │ │ └── main.css │ │ └── webpack.config.js │ ├── at-import-in-the-middle │ │ ├── a.css │ │ ├── b.css │ │ ├── c.css │ │ ├── expected │ │ │ └── main.css │ │ ├── index.css │ │ └── webpack.config.js │ ├── at-import-layer │ │ ├── expected │ │ │ └── main.css │ │ ├── import-with-layer-and-supports-and-media.css │ │ ├── import-with-layer.css │ │ ├── index.js │ │ ├── style.css │ │ ├── test.css │ │ ├── unnamed-layer.css │ │ ├── webpack.config.js │ │ └── zzz.css │ ├── at-import-supports │ │ ├── expected │ │ │ └── main.css │ │ ├── import-with-supports.css │ │ ├── index.js │ │ ├── style.css │ │ ├── test.css │ │ └── webpack.config.js │ ├── at-import │ │ ├── a.css │ │ ├── aa.css │ │ ├── ab.css │ │ ├── ac.css │ │ ├── ad.css │ │ ├── ae.css │ │ ├── b.css │ │ ├── ba.css │ │ ├── bb.css │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ └── webpack.config.js │ ├── at-media │ │ ├── a.css │ │ ├── b.css │ │ ├── c.css │ │ ├── d.css │ │ ├── e.css │ │ ├── expected │ │ │ └── main.css │ │ ├── f.css │ │ ├── g.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── auxiliary-assets │ │ ├── expected │ │ │ ├── auxiliaryAssets-815babffe97b00a1f30b.woff2 │ │ │ ├── auxiliaryAssets-a0de923c946d4ccb38b0.ttf │ │ │ └── auxiliaryAssets-d4c409dfe110747b1763.woff │ │ ├── fonts.css │ │ ├── fonts │ │ │ ├── roboto-v18-latin-300.ttf │ │ │ ├── roboto-v18-latin-300.woff │ │ │ └── roboto-v18-latin-300.woff2 │ │ ├── index.js │ │ ├── test.filter.js │ │ └── webpack.config.js │ ├── base-uri-in-entry │ │ ├── expected │ │ │ ├── webpack-5-importModule │ │ │ │ ├── asset │ │ │ │ │ └── roboto-v18-latin-300.ttf │ │ │ │ ├── index.css │ │ │ │ └── index.mjs │ │ │ └── webpack-5 │ │ │ │ ├── asset │ │ │ │ └── roboto-v18-latin-300.ttf │ │ │ │ ├── index.css │ │ │ │ └── index.mjs │ │ ├── fonts │ │ │ └── roboto-v18-latin-300.ttf │ │ ├── index.js │ │ ├── main.css │ │ └── webpack.config.js │ ├── base-uri │ │ ├── expected │ │ │ ├── asset │ │ │ │ └── roboto-v18-latin-300.ttf │ │ │ ├── index.css │ │ │ └── index.mjs │ │ ├── fonts │ │ │ └── roboto-v18-latin-300.ttf │ │ ├── index.js │ │ ├── main.css │ │ └── webpack.config.js │ ├── build-in-css-support │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ ├── warnings.js │ │ └── webpack.config.js │ ├── chunkFilename-as-function │ │ ├── async.css │ │ ├── expected │ │ │ ├── 0.async.css │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── chunkFilename-fullhash │ │ ├── async.css │ │ ├── expected │ │ │ ├── webpack-5-importModule │ │ │ │ ├── 0.ec6b19ad9e5afccf41ed.css │ │ │ │ ├── async.js │ │ │ │ ├── ec6b19ad9e5afccf41ed.css │ │ │ │ └── main.js │ │ │ └── webpack-5 │ │ │ │ ├── 0.f572fe696dd05e7ca379.css │ │ │ │ ├── async.js │ │ │ │ ├── f572fe696dd05e7ca379.css │ │ │ │ └── main.js │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── chunkFilename │ │ ├── async.css │ │ ├── expected │ │ │ ├── 0.async.css │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── commonjs-module-syntax │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── composes-async │ │ ├── async-1.css │ │ ├── async-2.css │ │ ├── expected │ │ │ ├── async-1.css │ │ │ └── dedupe.css │ │ ├── index.js │ │ └── webpack.config.js │ ├── content-entries-with-same-import │ │ ├── expected │ │ │ ├── 1.88fb74fe1cb22093f204.css │ │ │ └── 2.52b14831e64cae07fa20.css │ │ ├── index.js │ │ ├── one.js │ │ ├── style1.css │ │ ├── style2.css │ │ ├── two.js │ │ └── webpack.config.js │ ├── contenthash-1 │ │ ├── expected │ │ │ └── main.8c5b220bf6f482881a90.css │ │ ├── index.js │ │ ├── lib.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── contenthash-multiple-entries │ │ ├── entryA.js │ │ ├── entryB.js │ │ ├── entryC.js │ │ ├── entryD.js │ │ ├── entryE.js │ │ ├── expected │ │ │ ├── 1cd4a7654bac4107104f.css │ │ │ └── 788f5dc856f2e114b45c.css │ │ ├── styleA.css │ │ ├── styleB.css │ │ ├── styleC.css │ │ ├── styleD.css │ │ └── webpack.config.js │ ├── contenthash │ │ ├── expected │ │ │ ├── 1.main.a45a4571ab5cece12cf0.css │ │ │ └── 2.main.c282a646790b09956021.css │ │ ├── index.js │ │ ├── style1.css │ │ ├── style2.css │ │ └── webpack.config.js │ ├── custom-loader-with-functional-exports │ │ ├── app │ │ │ ├── index.js │ │ │ ├── mockLoader.js │ │ │ └── style.css │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.js │ │ └── webpack.config.js │ ├── custom-loader-with-new-url-and-public-path-1 │ │ ├── app │ │ │ ├── img.png │ │ │ ├── index.js │ │ │ ├── mockLoader.js │ │ │ ├── nested │ │ │ │ └── nested-img.png │ │ │ └── style.css │ │ ├── expected │ │ │ ├── webpack-5-importModule │ │ │ │ └── main.css │ │ │ └── webpack-5 │ │ │ │ └── main.css │ │ ├── outer-img.png │ │ └── webpack.config.js │ ├── custom-loader-with-new-url-and-public-path-auto │ │ ├── app │ │ │ ├── img.png │ │ │ ├── index.js │ │ │ ├── mockLoader.js │ │ │ ├── nested │ │ │ │ └── nested-img.png │ │ │ └── style.css │ │ ├── expected │ │ │ └── main.css │ │ ├── outer-img.png │ │ └── webpack.config.js │ ├── custom-loader-with-new-url-and-public-path-default-auto │ │ ├── app │ │ │ ├── img.png │ │ │ ├── index.js │ │ │ ├── mockLoader.js │ │ │ ├── nested │ │ │ │ └── nested-img.png │ │ │ └── style.css │ │ ├── expected │ │ │ └── main.css │ │ ├── outer-img.png │ │ └── webpack.config.js │ ├── custom-loader-with-new-url-and-public-path │ │ ├── app │ │ │ ├── img.png │ │ │ ├── index.js │ │ │ ├── mockLoader.js │ │ │ ├── nested │ │ │ │ └── nested-img.png │ │ │ └── style.css │ │ ├── expected │ │ │ ├── webpack-5-importModule │ │ │ │ └── main.css │ │ │ └── webpack-5 │ │ │ │ └── main.css │ │ ├── outer-img.png │ │ └── webpack.config.js │ ├── default-options │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── dependOn-multiple-files-per-entry │ │ ├── entryA.js │ │ ├── entryB.js │ │ ├── entryC.js │ │ ├── entryD.js │ │ ├── expected │ │ │ ├── common.css │ │ │ ├── common.js │ │ │ ├── entry1.css │ │ │ └── entry1.js │ │ ├── styleA.css │ │ ├── styleB.css │ │ ├── styleC.css │ │ ├── styleD.css │ │ └── webpack.config.js │ ├── dependOn │ │ ├── entryA.js │ │ ├── entryB.js │ │ ├── expected │ │ │ ├── common.css │ │ │ ├── common.js │ │ │ ├── entry1.css │ │ │ └── entry1.js │ │ ├── styleA.css │ │ ├── styleB.css │ │ └── webpack.config.js │ ├── devtool-source-map-from-loaders │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.css.map │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── devtool-source-map-no-source-maps-from-loaders │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── devtool-source-map │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.css.map │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── es-module-concatenation-modules │ │ ├── a.css │ │ ├── b.css │ │ ├── c.css │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── index.js │ │ └── webpack.config.js │ ├── es-module-concatenation │ │ ├── a.css │ │ ├── b.css │ │ ├── c.css │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── index.js │ │ └── webpack.config.js │ ├── es-module-syntax │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── es-named-and-default-export-1 │ │ ├── empty.css │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── index.js │ │ └── webpack.config.js │ ├── es-named-and-default-export │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── es-named-export-as-is-output-module │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.mjs │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── es-named-export-as-is │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── es-named-export-output-module │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.mjs │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── es-named-export │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── experimentalUseImportModule-false │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── experimentalUseImportModule-true │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── experimentalUseImportModule-undefined │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── export-only-locals-and-es-named-export │ │ ├── expected │ │ │ └── main.js │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── export-only-locals-commonjs │ │ ├── expected │ │ │ └── main.js │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── export-only-locals │ │ ├── expected │ │ │ └── main.js │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── file-loader │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── filename-as-function │ │ ├── expected │ │ │ └── demo │ │ │ │ └── css │ │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── filename-with-template │ │ ├── async.css │ │ ├── expected │ │ │ ├── async.css │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── filename-without-template │ │ ├── async.css │ │ ├── expected │ │ │ ├── 0.main.css │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── hmr-locals │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── index.css │ │ └── webpack.config.js │ ├── hmr │ │ ├── a.css │ │ ├── b.css │ │ ├── c.css │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── index.css │ │ └── webpack.config.js │ ├── ignore-other-loaders-2 │ │ ├── expected │ │ │ ├── cda29b14206471c0a745.ext │ │ │ └── main.css │ │ ├── index.js │ │ ├── other.ext │ │ ├── style.css │ │ └── webpack.config.js │ ├── ignore-other-loaders │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── other.css │ │ ├── style.css │ │ └── webpack.config.js │ ├── ignoreOrder │ │ ├── e1.css │ │ ├── e2.css │ │ ├── expected │ │ │ └── styles.css │ │ ├── index.js │ │ ├── index2.js │ │ └── webpack.config.js │ ├── ignoreOrderFalse │ │ ├── e1.css │ │ ├── e2.css │ │ ├── e3.css │ │ ├── expected │ │ │ └── styles.css │ │ ├── index.js │ │ ├── index2.js │ │ ├── index3.js │ │ ├── warnings.js │ │ └── webpack.config.js │ ├── ignoreOrderFalseWithoutGoodChunks │ │ ├── e1.css │ │ ├── e2.css │ │ ├── e3.css │ │ ├── e4.css │ │ ├── expected │ │ │ └── styles.css │ │ ├── index.js │ │ ├── index2.js │ │ ├── index3.js │ │ ├── index4.js │ │ ├── warnings.js │ │ └── webpack.config.js │ ├── import │ │ ├── a.css │ │ ├── b.css │ │ ├── c.css │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ └── webpack.config.js │ ├── insert-function │ │ ├── expected │ │ │ ├── 1.css │ │ │ ├── 1.js │ │ │ └── main.js │ │ ├── src │ │ │ ├── index.js │ │ │ └── inject.css │ │ └── webpack.config.js │ ├── insert-string │ │ ├── expected │ │ │ ├── 1.css │ │ │ ├── 1.js │ │ │ └── main.js │ │ ├── src │ │ │ ├── index.js │ │ │ └── inject.css │ │ └── webpack.config.js │ ├── insert-undefined │ │ ├── expected │ │ │ ├── 1.css │ │ │ ├── 1.js │ │ │ └── main.js │ │ ├── src │ │ │ ├── index.js │ │ │ └── inject.css │ │ └── webpack.config.js │ ├── issue-css-loader-1503-1 │ │ ├── dark.css │ │ ├── expected │ │ │ ├── dark.css │ │ │ └── index.css │ │ ├── index.css │ │ └── webpack.config.js │ ├── issue-css-loader-1503-2 │ │ ├── dark.css │ │ ├── expected │ │ │ ├── dark.css │ │ │ └── index.css │ │ ├── index.css │ │ └── webpack.config.js │ ├── issue-css-loader-1503 │ │ ├── dark.css │ │ ├── expected │ │ │ ├── dark.css │ │ │ └── index.css │ │ ├── index.css │ │ └── webpack.config.js │ ├── js-hash │ │ ├── expected │ │ │ ├── webpack-5-importModule │ │ │ │ ├── style.673556889871ee1ba393.1.css │ │ │ │ └── style.da830ae5237422e8b8b0.2.css │ │ │ └── webpack-5 │ │ │ │ ├── style.673556889871ee1ba393.1.css │ │ │ │ └── style.da830ae5237422e8b8b0.2.css │ │ ├── index.js │ │ ├── loader.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── moduleFilenameMutableFilename │ │ ├── expected │ │ │ └── mutated.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── multiple-compiler │ │ ├── expected │ │ │ ├── one-main.js │ │ │ ├── one │ │ │ │ └── main.css │ │ │ ├── two-main.js │ │ │ └── two │ │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── multiple-entry │ │ ├── a.css │ │ ├── async-one.js │ │ ├── async-two.js │ │ ├── b.css │ │ ├── c.css │ │ ├── d.css │ │ ├── expected │ │ │ ├── async-one.css │ │ │ ├── async-two.css │ │ │ ├── main-one.css │ │ │ └── main-two.css │ │ ├── index-one.js │ │ ├── index-two.js │ │ └── webpack.config.js │ ├── multiple-themes-async-loading-with-default-light │ │ ├── expected │ │ │ ├── dark.css │ │ │ └── main.css │ │ ├── public │ │ │ └── index.html │ │ ├── src │ │ │ ├── dark-theme │ │ │ │ └── _vars.scss │ │ │ ├── index.js │ │ │ ├── light-theme │ │ │ │ └── _vars.scss │ │ │ └── style.scss │ │ └── webpack.config.js │ ├── multiple-themes-async-loading │ │ ├── expected │ │ │ ├── dark.css │ │ │ └── light.css │ │ ├── public │ │ │ └── index.html │ │ ├── src │ │ │ ├── dark-theme │ │ │ │ └── _vars.scss │ │ │ ├── index.js │ │ │ ├── light-theme │ │ │ │ └── _vars.scss │ │ │ └── style.scss │ │ └── webpack.config.js │ ├── nested │ │ ├── a.css │ │ ├── b.css │ │ ├── component.css │ │ ├── component.js │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ └── webpack.config.js │ ├── new-url │ │ ├── expected │ │ │ ├── 09a1a1112c577c279435.png │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── img.png │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── no-identifier │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── no-loader │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── no-runtime │ │ ├── async.css │ │ ├── expected │ │ │ ├── async.css │ │ │ ├── async.js │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── no-source-map │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── output-iife │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── output-module │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── pathinfo-devtool-source-map │ │ ├── expected │ │ │ ├── main.css │ │ │ └── main.css.map │ │ ├── extra.css │ │ ├── index.js │ │ ├── other.css │ │ ├── style.css │ │ └── webpack.config.js │ ├── pathinfo │ │ ├── expected │ │ │ └── main.css │ │ ├── extra.css │ │ ├── index.js │ │ ├── other.css │ │ ├── style.css │ │ └── webpack.config.js │ ├── prefetch-preload-hmr │ │ ├── a.css │ │ ├── b.js │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ └── webpack.config.js │ ├── prefetch-preload │ │ ├── a.css │ │ ├── b.js │ │ ├── b1.css │ │ ├── b2.css │ │ ├── b3.js │ │ ├── c.js │ │ ├── c1.css │ │ ├── c2.css │ │ ├── expected │ │ │ ├── a.css │ │ │ ├── b.js │ │ │ ├── b1.css │ │ │ ├── b2.css │ │ │ ├── c.js │ │ │ ├── c1.css │ │ │ ├── c2.css │ │ │ └── main.js │ │ ├── index.js │ │ └── webpack.config.js │ ├── publicpath-absolute-url-1 │ │ ├── expected │ │ │ ├── webpack-5-importModule │ │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ │ └── main.css │ │ │ └── webpack-5 │ │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-absolute-url-2 │ │ ├── expected │ │ │ ├── webpack-5-importModule │ │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ │ └── main.css │ │ │ └── webpack-5 │ │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-absolute-url-3 │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-absolute-url-4 │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-absolute-url-5 │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-absolute-url-6 │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-absolute-url │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-auto-2 │ │ ├── expected │ │ │ ├── assets │ │ │ │ └── img │ │ │ │ │ └── react.svg │ │ │ ├── same_root.svg │ │ │ └── styles │ │ │ │ ├── main.css │ │ │ │ ├── nested │ │ │ │ └── nested_dir.svg │ │ │ │ └── same_dir.svg │ │ ├── images │ │ │ └── react.svg │ │ ├── index.js │ │ ├── nested_dir.svg │ │ ├── outer.svg │ │ ├── same_dir.svg │ │ ├── same_root.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-auto-3 │ │ ├── expected │ │ │ ├── assets │ │ │ │ ├── img │ │ │ │ │ └── react.svg │ │ │ │ ├── img2.svg │ │ │ │ └── nested │ │ │ │ │ └── img3.svg │ │ │ ├── img1.svg │ │ │ ├── img4.svg │ │ │ └── main.css │ │ ├── images │ │ │ └── react.svg │ │ ├── img2.svg │ │ ├── img3.svg │ │ ├── index.js │ │ ├── outer.svg │ │ ├── src │ │ │ └── styles │ │ │ │ ├── img │ │ │ │ └── img4.svg │ │ │ │ ├── img1.svg │ │ │ │ └── style.css │ │ └── webpack.config.js │ ├── publicpath-auto-4 │ │ ├── app │ │ │ ├── img.png │ │ │ ├── index.js │ │ │ ├── nested │ │ │ │ └── nested-img.png │ │ │ └── style.css │ │ ├── expected │ │ │ ├── img.png │ │ │ ├── main.css │ │ │ └── nested │ │ │ │ └── nested-img.png │ │ ├── outer-img.png │ │ └── webpack.config.js │ ├── publicpath-auto │ │ ├── expected │ │ │ ├── webpack-5-importModule │ │ │ │ ├── assets │ │ │ │ │ └── react.svg │ │ │ │ └── styles │ │ │ │ │ └── 1f2bc28d72f2b4b52ca6 │ │ │ │ │ └── main.css │ │ │ └── webpack-5 │ │ │ │ ├── assets │ │ │ │ └── react.svg │ │ │ │ └── styles │ │ │ │ └── f46d3be95d50e953356d │ │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-default-auto │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-empty-string │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-function-2 │ │ ├── expected │ │ │ ├── webpack-5-importModule │ │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ │ └── nested │ │ │ │ │ ├── again │ │ │ │ │ └── style.css │ │ │ │ │ └── style.css │ │ │ └── webpack-5 │ │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ │ └── nested │ │ │ │ ├── again │ │ │ │ └── style.css │ │ │ │ └── style.css │ │ ├── nested │ │ │ ├── again │ │ │ │ └── style.css │ │ │ └── style.css │ │ ├── react.svg │ │ └── webpack.config.js │ ├── publicpath-function │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── nested │ │ │ │ ├── again │ │ │ │ └── style.css │ │ │ │ └── style.css │ │ ├── nested │ │ │ ├── again │ │ │ │ └── style.css │ │ │ └── style.css │ │ ├── react.svg │ │ └── webpack.config.js │ ├── publicpath-loader-auto │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-path-relative-1 │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-path-relative-2 │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-path-relative-3 │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-path-relative-4 │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-path-relative-5 │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-path-relative-6 │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-path-relative-7 │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── publicpath-path-relative │ │ ├── expected │ │ │ ├── c9e192c015437a21dea1.svg │ │ │ └── main.css │ │ ├── index.js │ │ ├── react.svg │ │ ├── style.css │ │ └── webpack.config.js │ ├── runtime │ │ ├── async.js │ │ ├── expected │ │ │ ├── main.a45a4571ab5cece12cf0.css │ │ │ └── runtime~main.js │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── serializingBigStrings │ │ └── webpack.config.js │ ├── shared-import │ │ ├── a.css │ │ ├── b.css │ │ ├── c.css │ │ ├── expected │ │ │ ├── 1.css │ │ │ └── main.css │ │ ├── index.js │ │ ├── shared.css │ │ └── webpack.config.js │ ├── simple-async-load-css-fallback │ │ ├── a.css │ │ ├── async-one.js │ │ ├── async-two.js │ │ ├── b.css │ │ ├── c.css │ │ ├── d.css │ │ ├── e.css │ │ ├── expected │ │ │ ├── async-one.css │ │ │ ├── async-two.css │ │ │ └── main.css │ │ ├── f.css │ │ ├── index.js │ │ └── webpack.config.js │ ├── simple-async-load-css │ │ ├── a.css │ │ ├── async-one.js │ │ ├── async-two.js │ │ ├── b.css │ │ ├── c.css │ │ ├── d.css │ │ ├── e.css │ │ ├── expected │ │ │ ├── async-one.css │ │ │ ├── async-two.css │ │ │ └── main.css │ │ ├── f.css │ │ ├── index.js │ │ └── webpack.config.js │ ├── simple-async-source-map │ │ ├── async.css │ │ ├── async.js │ │ ├── expected │ │ │ ├── 1.css │ │ │ ├── 1.css.map │ │ │ ├── 2.css │ │ │ ├── 2.css.map │ │ │ ├── main.css │ │ │ └── main.css.map │ │ ├── in-async.css │ │ ├── index.js │ │ ├── main.css │ │ └── webpack.config.js │ ├── simple-async │ │ ├── async.css │ │ ├── async.js │ │ ├── expected │ │ │ ├── 1.css │ │ │ ├── 2.css │ │ │ └── main.css │ │ ├── in-async.css │ │ ├── index.js │ │ ├── main.css │ │ └── webpack.config.js │ ├── simple-commonjs-syntax │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── simple-css-modules-mode-global │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── simple-css-modules-mode-local-output-module │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── simple-css-modules-mode-local │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── simple-css-modules-mode-pure │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── simple-es-module-syntax │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── simple-multiple │ │ ├── a.css │ │ ├── b.css │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ └── webpack.config.js │ ├── simple │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── source-map │ │ ├── expected │ │ │ └── main.css │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── split-chunks-all │ │ ├── a.js │ │ ├── b.js │ │ ├── expected │ │ │ ├── 2.css │ │ │ └── 2.js │ │ ├── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── split-chunks-based-on-entry-with-common-chunk-and-inside-dir │ │ ├── a.css │ │ ├── a.js │ │ ├── b.css │ │ ├── b.js │ │ ├── common.css │ │ ├── common.js │ │ ├── components │ │ │ ├── comp1.css │ │ │ ├── comp1.js │ │ │ ├── comp2.css │ │ │ └── comp2.js │ │ ├── expected │ │ │ ├── a │ │ │ │ └── index.css │ │ │ ├── b │ │ │ │ └── index.css │ │ │ ├── common │ │ │ │ └── index.css │ │ │ ├── comp1 │ │ │ │ └── index.css │ │ │ └── comp2 │ │ │ │ └── index.css │ │ └── webpack.config.js │ ├── split-chunks-based-on-entry-with-common-chunk │ │ ├── a.css │ │ ├── a.js │ │ ├── b.css │ │ ├── b.js │ │ ├── common.css │ │ ├── common.js │ │ ├── components │ │ │ ├── comp1.css │ │ │ ├── comp1.js │ │ │ ├── comp2.css │ │ │ └── comp2.js │ │ ├── expected │ │ │ ├── common.css │ │ │ ├── comp1.css │ │ │ ├── comp2.css │ │ │ ├── styles_a.css │ │ │ └── styles_b.css │ │ └── webpack.config.js │ ├── split-chunks-based-on-entry-with-common-in-each-chunk │ │ ├── a.css │ │ ├── a.js │ │ ├── b.css │ │ ├── b.js │ │ ├── common.css │ │ ├── components │ │ │ ├── comp1.css │ │ │ ├── comp1.js │ │ │ ├── comp2.css │ │ │ └── comp2.js │ │ ├── expected │ │ │ ├── comp1.css │ │ │ ├── comp2.css │ │ │ ├── styles_a.css │ │ │ └── styles_b.css │ │ └── webpack.config.js │ ├── split-chunks-based-on-entry │ │ ├── a.css │ │ ├── a.js │ │ ├── b.css │ │ ├── b.js │ │ ├── components │ │ │ ├── comp1.css │ │ │ ├── comp1.js │ │ │ ├── comp2.css │ │ │ └── comp2.js │ │ ├── expected │ │ │ ├── comp1.css │ │ │ ├── comp2.css │ │ │ ├── styles_a.css │ │ │ └── styles_b.css │ │ └── webpack.config.js │ ├── split-chunks-no-vendor │ │ ├── expected │ │ │ └── bundle.css │ │ ├── index.js │ │ ├── node_modules │ │ │ ├── bootstrap │ │ │ │ └── bootstrap.css │ │ │ ├── other-css │ │ │ │ └── other.css │ │ │ └── package │ │ │ │ └── index.js │ │ ├── style.css │ │ └── webpack.config.js │ ├── split-chunks-recursiveIssuer │ │ ├── a.css │ │ ├── a.js │ │ ├── b.css │ │ ├── b.js │ │ ├── components │ │ │ ├── comp1.css │ │ │ ├── comp1.js │ │ │ ├── comp2.css │ │ │ └── comp2.js │ │ ├── expected │ │ │ ├── styles_a.css │ │ │ └── styles_b.css │ │ └── webpack.config.js │ ├── split-chunks-single │ │ ├── a.css │ │ ├── b.css │ │ ├── c.css │ │ ├── chunk1.js │ │ ├── chunk2.js │ │ ├── d.css │ │ ├── e1.css │ │ ├── e2.css │ │ ├── entry1.js │ │ ├── entry2.js │ │ ├── expected │ │ │ └── styles.css │ │ ├── f.css │ │ ├── g.css │ │ ├── h.css │ │ ├── style.css │ │ └── webpack.config.js │ └── split-chunks │ │ ├── expected │ │ ├── main.css │ │ └── vendors.css │ │ ├── index.js │ │ ├── node_modules │ │ └── bootstrap.css │ │ ├── style.css │ │ └── webpack.config.js ├── emit-option.test.js ├── enforce-esm.test.js ├── fixtures │ ├── attributes.js │ ├── esm.js │ ├── insert.js │ ├── json │ │ └── data-urls.json │ ├── locals.js │ ├── locals │ │ ├── index.css │ │ └── template.js │ ├── no-nonce.js │ ├── nonce.js │ ├── react.svg │ ├── simple.css │ ├── simple.js │ ├── style-url.css │ └── style-url.js ├── helpers │ ├── compile.js │ ├── getCompiler.js │ ├── getErrors.js │ ├── getWarnings.js │ ├── index.js │ ├── normalizeErrors.js │ ├── readAsset.js │ ├── runInJsDom.js │ ├── source.js │ └── yn.js ├── hooks.test.js ├── ignoreOrder-option.test.js ├── insert-option.test.js ├── linkTag-option.test.js ├── manual │ ├── README.md │ ├── index.html │ ├── src │ │ ├── crossorigin.css │ │ ├── crossorigin.js │ │ ├── index.js │ │ ├── initial.css │ │ ├── lazy-failure.css │ │ ├── lazy-failure.js │ │ ├── lazy.css │ │ ├── lazy.js │ │ ├── lazy.module.css │ │ ├── lazy2.css │ │ ├── prefetch.css │ │ ├── preload.css │ │ ├── preload.js │ │ ├── preloaded1.css │ │ ├── preloaded1.js │ │ ├── preloaded2.css │ │ ├── preloaded2.js │ │ ├── simple.css │ │ ├── simple.module.css │ │ ├── worker.css │ │ └── worker.js │ └── webpack.config.js ├── nonce.test.js ├── normalize-url.test.js ├── runtime-option.test.js ├── stringifyLocal.test.js ├── validate-loader-options.test.js └── validate-plugin-options.test.js ├── tsconfig.json └── types ├── hmr ├── hotModuleReplacement.d.ts └── normalize-url.d.ts ├── hooks.d.ts ├── index.d.ts ├── loader.d.ts └── utils.d.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /coverage 2 | /dist 3 | /node_modules 4 | /test/fixtures 5 | /test/cases/*/expected 6 | /test/js 7 | /test/manual/dist 8 | /types/**/* 9 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: "@babel/eslint-parser", 4 | extends: ["@webpack-contrib/eslint-config-webpack", "prettier"], 5 | }; 6 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | package-lock.json -diff 2 | * text=auto 3 | test/cases/* eol=lf 4 | bin/* eol=lf 5 | yarn.lock -diff 6 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These are the default owners for everything in 2 | # webpack-contrib 3 | @webpack-contrib/org-maintainers 4 | 5 | # Add repository specific users / groups 6 | # below here for libs that are not maintained by the org. -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | open_collective: webpack 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/SUPPORT.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🆘 Support, Help, and Advice 3 | about: 👉🏽 Need support, help, or advice? Don't open an issue! Head to https://github.com/webpack/webpack/discussions or StackOverflow. 4 | --- 5 | 6 | Hey there! If you need support, help, or advice then this is not the place to ask. 7 | Please visit [GitHub Discussions](https://github.com/webpack/webpack/discussions) or [StackOverflow](https://stackoverflow.com/questions/tagged/webpack) instead. 8 | -------------------------------------------------------------------------------- /.github/workflows/dependency-review.yml: -------------------------------------------------------------------------------- 1 | name: "Dependency Review" 2 | on: [pull_request] 3 | 4 | permissions: 5 | contents: read 6 | 7 | jobs: 8 | dependency-review: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: "Checkout Repository" 12 | uses: actions/checkout@v4 13 | - name: "Dependency Review" 14 | uses: actions/dependency-review-action@v4 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | logs 2 | *.log 3 | npm-debug.log* 4 | .eslintcache 5 | /coverage 6 | /dist 7 | /test/js 8 | /test/outputs 9 | /test/manual/dist 10 | /local 11 | /reports 12 | /node_modules 13 | .DS_Store 14 | Thumbs.db 15 | .idea 16 | .vscode 17 | *.sublime-project 18 | *.sublime-workspace 19 | .idea 20 | *.iml 21 | -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx --no-install commitlint --edit $1 5 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx --no-install lint-staged 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /coverage 2 | /dist 3 | /node_modules 4 | /test/fixtures 5 | /test/manual/dist 6 | /test/cases/*/expected 7 | /test/js 8 | CHANGELOG.md 9 | -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ["@commitlint/config-conventional"], 3 | rules: { 4 | "header-max-length": [0], 5 | "body-max-line-length": [0], 6 | "footer-max-line-length": [0], 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | transformIgnorePatterns: ["/node_modules/", "/dist/"], 3 | watchPathIgnorePatterns: ["/test/js"], 4 | setupFilesAfterEnv: ["/setupTest.js"], 5 | }; 6 | -------------------------------------------------------------------------------- /lint-staged.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "*": ["prettier --write --ignore-unknown", "cspell --no-must-find-files"], 3 | "*.{js,ts}": ["eslint --cache --fix"], 4 | }; 5 | -------------------------------------------------------------------------------- /setupTest.js: -------------------------------------------------------------------------------- 1 | jest.setTimeout(25000); 2 | -------------------------------------------------------------------------------- /test/cases/asset-modules/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(static/react.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/asset-modules/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/asset-modules/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/at-charset/a.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | @import "./ae.css"; 4 | @import "./aa.css"; 5 | @import "./ab.css"; 6 | @import "./ac.css"; 7 | @import "./ad.css"; 8 | 9 | body { 10 | background: red; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/at-charset/aa.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | .aa { 4 | background: green; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/at-charset/ab.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | .ab { 4 | background: green; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/at-charset/ac.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | .ac { 4 | background: green; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/at-charset/ad.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | .ad { 4 | background: green; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/at-charset/ae.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | .ae { 4 | background: green; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/at-charset/b.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | @import "./ba.css"; 4 | @import "./bb.css"; 5 | 6 | body { 7 | background: yellow; 8 | } 9 | -------------------------------------------------------------------------------- /test/cases/at-charset/ba.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | .ba { 4 | background: green; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/at-charset/bb.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | .bb { 4 | background: green; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/at-charset/index.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | import "./b.css"; 3 | -------------------------------------------------------------------------------- /test/cases/at-charset/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/at-import-external-with-media/b.css: -------------------------------------------------------------------------------- 1 | @import url("https://some/external/css"); 2 | 3 | .b { 4 | background: red; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/at-import-external-with-media/index.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | import "./b.css"; 3 | -------------------------------------------------------------------------------- /test/cases/at-import-external-with-media/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/at-import-in-the-entry/a.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: "Manrope"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import-in-the-entry/b.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css2?family=Manrope:wght@500;800&display=swap); 2 | -------------------------------------------------------------------------------- /test/cases/at-import-in-the-entry/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | mode: "development", 5 | entry: ["./a.css", "./b.css"], 6 | output: { 7 | pathinfo: true, 8 | }, 9 | module: { 10 | rules: [ 11 | { 12 | test: /\.css$/, 13 | use: [Self.loader, "css-loader"], 14 | }, 15 | ], 16 | }, 17 | plugins: [ 18 | new Self({ 19 | filename: "[name].css", 20 | }), 21 | ], 22 | }; 23 | -------------------------------------------------------------------------------- /test/cases/at-import-in-the-middle/a.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import-in-the-middle/b.css: -------------------------------------------------------------------------------- 1 | .b { 2 | background: red; 3 | } 4 | 5 | @import url("https://some/external/css"); 6 | 7 | .b { 8 | color: yellow; 9 | } 10 | -------------------------------------------------------------------------------- /test/cases/at-import-in-the-middle/c.css: -------------------------------------------------------------------------------- 1 | .c { 2 | background: red; 3 | } 4 | @import "./a.css"; 5 | @import url("https://some/other/external/css"); 6 | 7 | .c { 8 | color: yellow; 9 | } 10 | -------------------------------------------------------------------------------- /test/cases/at-import-in-the-middle/expected/main.css: -------------------------------------------------------------------------------- 1 | @import url(https://some/other/external/css); 2 | @import url(https://some/external/css); 3 | body { 4 | background: red; 5 | } 6 | 7 | .c { 8 | background: red; 9 | } 10 | 11 | .c { 12 | color: yellow; 13 | } 14 | 15 | .b { 16 | background: red; 17 | } 18 | 19 | .b { 20 | color: yellow; 21 | } 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /test/cases/at-import-in-the-middle/index.css: -------------------------------------------------------------------------------- 1 | @import "./c.css"; 2 | @import "./b.css"; 3 | -------------------------------------------------------------------------------- /test/cases/at-import-in-the-middle/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.css", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/at-import-layer/import-with-layer-and-supports-and-media.css: -------------------------------------------------------------------------------- 1 | /* prettier-ignore */ 2 | @import url("./zzz.css") layer(base) supports(display: grid) screen and (min-width: 900px); 3 | 4 | .bar { 5 | color: blue; 6 | } 7 | -------------------------------------------------------------------------------- /test/cases/at-import-layer/import-with-layer.css: -------------------------------------------------------------------------------- 1 | @import url("./test.css") layer(base); 2 | 3 | @layer base { 4 | .middle { 5 | background: green; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/cases/at-import-layer/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/at-import-layer/style.css: -------------------------------------------------------------------------------- 1 | @import url("./import-with-layer.css") layer(framework); 2 | @import url("./unnamed-layer.css") layer; 3 | /* prettier-ignore */ 4 | @import url("./import-with-layer-and-supports-and-media.css") layer(default) supports(display: flex) (prefers-color-scheme: dark); 5 | 6 | .top { 7 | background: red; 8 | } 9 | -------------------------------------------------------------------------------- /test/cases/at-import-layer/test.css: -------------------------------------------------------------------------------- 1 | .bottom { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import-layer/unnamed-layer.css: -------------------------------------------------------------------------------- 1 | .color { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import-layer/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/at-import-layer/zzz.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import-supports/expected/main.css: -------------------------------------------------------------------------------- 1 | @supports (display: flex) { 2 | @supports (display: grid) {.bottom { 3 | background: blue; 4 | } 5 | } 6 | } 7 | @supports (display: flex) { 8 | .middle { 9 | background: green; 10 | } 11 | 12 | } 13 | .top { 14 | background: red; 15 | } 16 | 17 | -------------------------------------------------------------------------------- /test/cases/at-import-supports/import-with-supports.css: -------------------------------------------------------------------------------- 1 | @import url("./test.css") supports(display: grid); 2 | 3 | .middle { 4 | background: green; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/at-import-supports/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/at-import-supports/style.css: -------------------------------------------------------------------------------- 1 | @import url("./import-with-supports.css") supports(display: flex); 2 | 3 | .top { 4 | background: red; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/at-import-supports/test.css: -------------------------------------------------------------------------------- 1 | .bottom { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import-supports/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/at-import/a.css: -------------------------------------------------------------------------------- 1 | @import "./ae.css"; 2 | @import "./aa.css"; 3 | @import "./ab.css"; 4 | @import "./ac.css"; 5 | @import "./ad.css"; 6 | 7 | body { 8 | background: red; 9 | } 10 | -------------------------------------------------------------------------------- /test/cases/at-import/aa.css: -------------------------------------------------------------------------------- 1 | .aa { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import/ab.css: -------------------------------------------------------------------------------- 1 | .ab { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import/ac.css: -------------------------------------------------------------------------------- 1 | .ac { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import/ad.css: -------------------------------------------------------------------------------- 1 | .ad { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import/ae.css: -------------------------------------------------------------------------------- 1 | .ae { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import/b.css: -------------------------------------------------------------------------------- 1 | @import "./ba.css"; 2 | @import "./bb.css"; 3 | 4 | body { 5 | background: yellow; 6 | } 7 | -------------------------------------------------------------------------------- /test/cases/at-import/ba.css: -------------------------------------------------------------------------------- 1 | .ba { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import/bb.css: -------------------------------------------------------------------------------- 1 | .bb { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-import/expected/main.css: -------------------------------------------------------------------------------- 1 | .ae { 2 | background: green; 3 | } 4 | 5 | .aa { 6 | background: green; 7 | } 8 | 9 | .ab { 10 | background: green; 11 | } 12 | 13 | .ac { 14 | background: green; 15 | } 16 | 17 | .ad { 18 | background: green; 19 | } 20 | 21 | body { 22 | background: red; 23 | } 24 | 25 | .ba { 26 | background: green; 27 | } 28 | 29 | .bb { 30 | background: green; 31 | } 32 | 33 | body { 34 | background: yellow; 35 | } 36 | 37 | -------------------------------------------------------------------------------- /test/cases/at-import/index.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | import "./b.css"; 3 | -------------------------------------------------------------------------------- /test/cases/at-import/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/at-media/a.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 24px; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-media/b.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 32px; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-media/c.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 64px; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-media/d.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 128px; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-media/e.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 256px; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-media/f.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 512px; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-media/g.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 1024px; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/at-media/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/auxiliary-assets/expected/auxiliaryAssets-815babffe97b00a1f30b.woff2: -------------------------------------------------------------------------------- 1 | auxiliaryAssets-815babffe97b00a1f30b.woff2 -------------------------------------------------------------------------------- /test/cases/auxiliary-assets/expected/auxiliaryAssets-a0de923c946d4ccb38b0.ttf: -------------------------------------------------------------------------------- 1 | auxiliaryAssets-a0de923c946d4ccb38b0.ttf -------------------------------------------------------------------------------- /test/cases/auxiliary-assets/expected/auxiliaryAssets-d4c409dfe110747b1763.woff: -------------------------------------------------------------------------------- 1 | auxiliaryAssets-d4c409dfe110747b1763.woff -------------------------------------------------------------------------------- /test/cases/auxiliary-assets/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Roboto"; 3 | font-style: normal; 4 | font-weight: 300; 5 | font-display: swap; 6 | src: local("Roboto Light"), local("Roboto-Light"), 7 | url("fonts/roboto-v18-latin-300.woff2") format("woff2"), 8 | url("fonts/roboto-v18-latin-300.woff") format("woff"), 9 | url("fonts/roboto-v18-latin-300.ttf") format("truetype"); 10 | } 11 | -------------------------------------------------------------------------------- /test/cases/auxiliary-assets/fonts/roboto-v18-latin-300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/auxiliary-assets/fonts/roboto-v18-latin-300.ttf -------------------------------------------------------------------------------- /test/cases/auxiliary-assets/fonts/roboto-v18-latin-300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/auxiliary-assets/fonts/roboto-v18-latin-300.woff -------------------------------------------------------------------------------- /test/cases/auxiliary-assets/fonts/roboto-v18-latin-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/auxiliary-assets/fonts/roboto-v18-latin-300.woff2 -------------------------------------------------------------------------------- /test/cases/auxiliary-assets/index.js: -------------------------------------------------------------------------------- 1 | import "./fonts.css"; 2 | -------------------------------------------------------------------------------- /test/cases/auxiliary-assets/test.filter.js: -------------------------------------------------------------------------------- 1 | import yn from "../../helpers/yn"; 2 | 3 | module.exports = () => yn(process.env.OLD_API); 4 | -------------------------------------------------------------------------------- /test/cases/base-uri-in-entry/expected/webpack-5-importModule/asset/roboto-v18-latin-300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/base-uri-in-entry/expected/webpack-5-importModule/asset/roboto-v18-latin-300.ttf -------------------------------------------------------------------------------- /test/cases/base-uri-in-entry/expected/webpack-5-importModule/index.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: Roboto-plp; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: url(my-scheme://uri/assets/asset/roboto-v18-latin-300.ttf) format("truetype"); 6 | } 7 | 8 | -------------------------------------------------------------------------------- /test/cases/base-uri-in-entry/expected/webpack-5-importModule/index.mjs: -------------------------------------------------------------------------------- 1 | var __webpack_exports__ = {}; 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/cases/base-uri-in-entry/expected/webpack-5/asset/roboto-v18-latin-300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/base-uri-in-entry/expected/webpack-5/asset/roboto-v18-latin-300.ttf -------------------------------------------------------------------------------- /test/cases/base-uri-in-entry/expected/webpack-5/index.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: Roboto-plp; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: url(/assets/asset/roboto-v18-latin-300.ttf) format("truetype"); 6 | } 7 | 8 | -------------------------------------------------------------------------------- /test/cases/base-uri-in-entry/expected/webpack-5/index.mjs: -------------------------------------------------------------------------------- 1 | var __webpack_exports__ = {}; 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/cases/base-uri-in-entry/fonts/roboto-v18-latin-300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/base-uri-in-entry/fonts/roboto-v18-latin-300.ttf -------------------------------------------------------------------------------- /test/cases/base-uri-in-entry/index.js: -------------------------------------------------------------------------------- 1 | import "./main.css"; 2 | -------------------------------------------------------------------------------- /test/cases/base-uri-in-entry/main.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: Roboto-plp; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: url("./fonts/roboto-v18-latin-300.ttf") format("truetype"); 6 | } 7 | -------------------------------------------------------------------------------- /test/cases/base-uri/expected/asset/roboto-v18-latin-300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/base-uri/expected/asset/roboto-v18-latin-300.ttf -------------------------------------------------------------------------------- /test/cases/base-uri/expected/index.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: Roboto-plp; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: url(/assets/asset/roboto-v18-latin-300.ttf) format("truetype"); 6 | } 7 | 8 | -------------------------------------------------------------------------------- /test/cases/base-uri/expected/index.mjs: -------------------------------------------------------------------------------- 1 | var __webpack_exports__ = {}; 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/cases/base-uri/fonts/roboto-v18-latin-300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/base-uri/fonts/roboto-v18-latin-300.ttf -------------------------------------------------------------------------------- /test/cases/base-uri/index.js: -------------------------------------------------------------------------------- 1 | import "./main.css"; 2 | -------------------------------------------------------------------------------- /test/cases/base-uri/main.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: Roboto-plp; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: url("./fonts/roboto-v18-latin-300.ttf") format("truetype"); 6 | } 7 | -------------------------------------------------------------------------------- /test/cases/build-in-css-support/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | head{--webpack-0:_1;} -------------------------------------------------------------------------------- /test/cases/build-in-css-support/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/build-in-css-support/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-as-function/async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-as-function/expected/0.async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-as-function/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-as-function/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | 3 | /* eslint-disable-next-line no-unused-expressions */ 4 | import(/* webpackChunkName: "async" */ "./async.css"); 5 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-as-function/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-as-function/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | chunkFilename: ({ chunk }) => `${chunk.id}.${chunk.name}.css`, 17 | }), 18 | ], 19 | }; 20 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-fullhash/async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/0.ec6b19ad9e5afccf41ed.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/async.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | (self["webpackChunk"] = self["webpackChunk"] || []).push([[0],{ 3 | 4 | /***/ 2: 5 | /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6 | 7 | __webpack_require__.r(__webpack_exports__); 8 | // extracted by mini-css-extract-plugin 9 | 10 | 11 | /***/ }) 12 | 13 | }]); -------------------------------------------------------------------------------- /test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/ec6b19ad9e5afccf41ed.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-fullhash/expected/webpack-5/0.f572fe696dd05e7ca379.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-fullhash/expected/webpack-5/async.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | (self["webpackChunk"] = self["webpackChunk"] || []).push([[0],{ 3 | 4 | /***/ 2: 5 | /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6 | 7 | __webpack_require__.r(__webpack_exports__); 8 | // extracted by mini-css-extract-plugin 9 | 10 | 11 | /***/ }) 12 | 13 | }]); -------------------------------------------------------------------------------- /test/cases/chunkFilename-fullhash/expected/webpack-5/f572fe696dd05e7ca379.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-fullhash/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | 3 | /* eslint-disable-next-line no-unused-expressions */ 4 | import(/* webpackChunkName: "async" */ "./async.css"); 5 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-fullhash/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/chunkFilename-fullhash/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[fullhash].css", 16 | chunkFilename: "[id].[fullhash].css", 17 | }), 18 | ], 19 | }; 20 | -------------------------------------------------------------------------------- /test/cases/chunkFilename/async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/chunkFilename/expected/0.async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/chunkFilename/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/chunkFilename/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | 3 | /* eslint-disable-next-line no-unused-expressions */ 4 | import(/* webpackChunkName: "async" */ "./async.css"); 5 | -------------------------------------------------------------------------------- /test/cases/chunkFilename/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/chunkFilename/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | chunkFilename: "[id].[name].css", 17 | }), 18 | ], 19 | }; 20 | -------------------------------------------------------------------------------- /test/cases/commonjs-module-syntax/expected/main.css: -------------------------------------------------------------------------------- 1 | .foo__style__a { 2 | background: red; 3 | } 4 | 5 | .foo__style__b { 6 | color: green; 7 | } 8 | 9 | .c { 10 | color: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/commonjs-module-syntax/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/commonjs-module-syntax/style.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | 5 | :local(.b) { 6 | color: green; 7 | } 8 | 9 | :global(.c) { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/composes-async/async-1.css: -------------------------------------------------------------------------------- 1 | :local .base { 2 | composes: composed from "./async-2.css"; 3 | background: blue; 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/composes-async/async-2.css: -------------------------------------------------------------------------------- 1 | :local .composed { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/composes-async/expected/async-1.css: -------------------------------------------------------------------------------- 1 | .base { 2 | background: blue; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/composes-async/expected/dedupe.css: -------------------------------------------------------------------------------- 1 | .composed { 2 | background: green; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/composes-async/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable-next-line no-unused-expressions */ 2 | import(/* webpackChunkName: "async-1" */ "./async-1.css"); 3 | /* eslint-disable-next-line no-unused-expressions */ 4 | import(/* webpackChunkName: "async-2" */ "./async-2.css"); 5 | -------------------------------------------------------------------------------- /test/cases/content-entries-with-same-import/expected/1.88fb74fe1cb22093f204.css: -------------------------------------------------------------------------------- 1 | .a { 2 | width: 100px; 3 | } 4 | 5 | .b { 6 | width: 100px; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/content-entries-with-same-import/expected/2.52b14831e64cae07fa20.css: -------------------------------------------------------------------------------- 1 | .b { 2 | width: 100px; 3 | } 4 | 5 | .a { 6 | width: 100px; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/content-entries-with-same-import/index.js: -------------------------------------------------------------------------------- 1 | const app1 = import("./one"); 2 | const app2 = import("./two"); 3 | 4 | // eslint-disable-next-line no-console 5 | console.log(app1); 6 | // eslint-disable-next-line no-console 7 | console.log(app2); 8 | -------------------------------------------------------------------------------- /test/cases/content-entries-with-same-import/one.js: -------------------------------------------------------------------------------- 1 | import "./style1.css"; 2 | import "./style2.css"; 3 | 4 | export default "one"; 5 | -------------------------------------------------------------------------------- /test/cases/content-entries-with-same-import/style1.css: -------------------------------------------------------------------------------- 1 | .a { 2 | width: 100px; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/content-entries-with-same-import/style2.css: -------------------------------------------------------------------------------- 1 | .b { 2 | width: 100px; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/content-entries-with-same-import/two.js: -------------------------------------------------------------------------------- 1 | import "./style2.css"; 2 | import "./style1.css"; 3 | 4 | export default "two"; 5 | -------------------------------------------------------------------------------- /test/cases/contenthash-1/expected/main.8c5b220bf6f482881a90.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test/cases/contenthash-1/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | async () => await import("./lib.js"); 3 | import "./style.css"; 4 | -------------------------------------------------------------------------------- /test/cases/contenthash-1/lib.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/contenthash-1/lib.js -------------------------------------------------------------------------------- /test/cases/contenthash-1/style.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/contenthash-1/style.css -------------------------------------------------------------------------------- /test/cases/contenthash-multiple-entries/entryA.js: -------------------------------------------------------------------------------- 1 | import "./styleA.css"; 2 | import "./styleB.css"; 3 | -------------------------------------------------------------------------------- /test/cases/contenthash-multiple-entries/entryB.js: -------------------------------------------------------------------------------- 1 | import "./styleA.css"; 2 | -------------------------------------------------------------------------------- /test/cases/contenthash-multiple-entries/entryC.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/contenthash-multiple-entries/entryC.js -------------------------------------------------------------------------------- /test/cases/contenthash-multiple-entries/entryD.js: -------------------------------------------------------------------------------- 1 | import "./styleA.css"; 2 | import "./styleB.css"; 3 | -------------------------------------------------------------------------------- /test/cases/contenthash-multiple-entries/entryE.js: -------------------------------------------------------------------------------- 1 | import "./styleC.css"; 2 | import "./styleD.css"; 3 | -------------------------------------------------------------------------------- /test/cases/contenthash-multiple-entries/expected/1cd4a7654bac4107104f.css: -------------------------------------------------------------------------------- 1 | .styleA { 2 | background: red; 3 | } 4 | 5 | .styleB { 6 | background: blue; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/contenthash-multiple-entries/expected/788f5dc856f2e114b45c.css: -------------------------------------------------------------------------------- 1 | .styleA { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/contenthash-multiple-entries/styleA.css: -------------------------------------------------------------------------------- 1 | .styleA { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/contenthash-multiple-entries/styleB.css: -------------------------------------------------------------------------------- 1 | .styleB { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/contenthash-multiple-entries/styleC.css: -------------------------------------------------------------------------------- 1 | .styleA { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/contenthash-multiple-entries/styleD.css: -------------------------------------------------------------------------------- 1 | .styleB { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/contenthash/expected/1.main.a45a4571ab5cece12cf0.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/contenthash/expected/2.main.c282a646790b09956021.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/contenthash/index.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-unresolved 2 | import "./style.css"; 3 | -------------------------------------------------------------------------------- /test/cases/contenthash/style1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/contenthash/style2.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-functional-exports/app/index.js: -------------------------------------------------------------------------------- 1 | import { cnA, cnB } from "./style.css"; 2 | 3 | // eslint-disable-next-line no-console 4 | console.log(cnA(), cnB()); 5 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-functional-exports/app/mockLoader.js: -------------------------------------------------------------------------------- 1 | export default function loader() { 2 | const callback = this.async(); 3 | 4 | callback( 5 | null, 6 | `export default [ 7 | [module.id, ".class-name-a {background: red;}", ""], 8 | [module.id, ".class-name-b {background: blue;}", ""], 9 | ]; 10 | 11 | export var cnA = () => "class-name-a"; 12 | export var cnB = () => "class-name-b";` 13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-functional-exports/app/style.css: -------------------------------------------------------------------------------- 1 | .class-name-a { 2 | background: red; 3 | } 4 | 5 | .class-name-b { 6 | background: blue; 7 | } 8 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-functional-exports/expected/main.css: -------------------------------------------------------------------------------- 1 | .class-name-a {background: red;} 2 | .class-name-b {background: blue;} 3 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-1/app/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path-1/app/img.png -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-1/app/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-1/app/nested/nested-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path-1/app/nested/nested-img.png -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-1/app/style.css: -------------------------------------------------------------------------------- 1 | .class { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-1/expected/webpack-5-importModule/main.css: -------------------------------------------------------------------------------- 1 | .foo {background: url(public/img.png)} 2 | .bar {background: url(outer-img.png)} 3 | .baz {background: url(public/nested/nested-img.png)} 4 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-1/expected/webpack-5/main.css: -------------------------------------------------------------------------------- 1 | .foo {background: url(public/img.png)} 2 | .bar {background: url(public/../outer-img.png)} 3 | .baz {background: url(public/nested/nested-img.png)} 4 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-1/outer-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path-1/outer-img.png -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-auto/app/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path-auto/app/img.png -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-auto/app/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-auto/app/nested/nested-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path-auto/app/nested/nested-img.png -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-auto/app/style.css: -------------------------------------------------------------------------------- 1 | .class { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-auto/expected/main.css: -------------------------------------------------------------------------------- 1 | .foo {background: url(img.png)} 2 | .bar {background: url(../outer-img.png)} 3 | .baz {background: url(nested/nested-img.png)} 4 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-auto/outer-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path-auto/outer-img.png -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-default-auto/app/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path-default-auto/app/img.png -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-default-auto/app/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-default-auto/app/nested/nested-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path-default-auto/app/nested/nested-img.png -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-default-auto/app/style.css: -------------------------------------------------------------------------------- 1 | .class { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-default-auto/expected/main.css: -------------------------------------------------------------------------------- 1 | .foo {background: url(img.png)} 2 | .bar {background: url(../outer-img.png)} 3 | .baz {background: url(nested/nested-img.png)} 4 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path-default-auto/outer-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path-default-auto/outer-img.png -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path/app/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path/app/img.png -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path/app/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path/app/nested/nested-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path/app/nested/nested-img.png -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path/app/style.css: -------------------------------------------------------------------------------- 1 | .class { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path/expected/webpack-5-importModule/main.css: -------------------------------------------------------------------------------- 1 | .foo {background: url(/public/img.png)} 2 | .bar {background: url(/outer-img.png)} 3 | .baz {background: url(/public/nested/nested-img.png)} 4 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path/expected/webpack-5/main.css: -------------------------------------------------------------------------------- 1 | .foo {background: url(/public/img.png)} 2 | .bar {background: url(/public/../outer-img.png)} 3 | .baz {background: url(/public/nested/nested-img.png)} 4 | -------------------------------------------------------------------------------- /test/cases/custom-loader-with-new-url-and-public-path/outer-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/custom-loader-with-new-url-and-public-path/outer-img.png -------------------------------------------------------------------------------- /test/cases/default-options/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/default-options/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/default-options/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/default-options/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [new Self()], 14 | }; 15 | -------------------------------------------------------------------------------- /test/cases/dependOn-multiple-files-per-entry/entryA.js: -------------------------------------------------------------------------------- 1 | import "./styleA.css"; 2 | -------------------------------------------------------------------------------- /test/cases/dependOn-multiple-files-per-entry/entryB.js: -------------------------------------------------------------------------------- 1 | import "./styleB.css"; 2 | -------------------------------------------------------------------------------- /test/cases/dependOn-multiple-files-per-entry/entryC.js: -------------------------------------------------------------------------------- 1 | import "./styleC.css"; 2 | -------------------------------------------------------------------------------- /test/cases/dependOn-multiple-files-per-entry/entryD.js: -------------------------------------------------------------------------------- 1 | import "./styleD.css"; 2 | -------------------------------------------------------------------------------- /test/cases/dependOn-multiple-files-per-entry/expected/common.css: -------------------------------------------------------------------------------- 1 | .styleC { 2 | background: red; 3 | } 4 | 5 | .styleD { 6 | background: blue; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/dependOn-multiple-files-per-entry/expected/entry1.css: -------------------------------------------------------------------------------- 1 | .styleB { 2 | background: blue; 3 | } 4 | 5 | .styleA { 6 | background: red; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/dependOn-multiple-files-per-entry/styleA.css: -------------------------------------------------------------------------------- 1 | .styleA { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/dependOn-multiple-files-per-entry/styleB.css: -------------------------------------------------------------------------------- 1 | .styleB { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/dependOn-multiple-files-per-entry/styleC.css: -------------------------------------------------------------------------------- 1 | .styleC { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/dependOn-multiple-files-per-entry/styleD.css: -------------------------------------------------------------------------------- 1 | .styleD { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/dependOn/entryA.js: -------------------------------------------------------------------------------- 1 | import "./styleA.css"; 2 | -------------------------------------------------------------------------------- /test/cases/dependOn/entryB.js: -------------------------------------------------------------------------------- 1 | import "./styleB.css"; 2 | -------------------------------------------------------------------------------- /test/cases/dependOn/expected/common.css: -------------------------------------------------------------------------------- 1 | .styleB { 2 | background: blue; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/dependOn/expected/entry1.css: -------------------------------------------------------------------------------- 1 | .styleA { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/dependOn/styleA.css: -------------------------------------------------------------------------------- 1 | .styleA { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/dependOn/styleB.css: -------------------------------------------------------------------------------- 1 | .styleB { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/dependOn/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: { 5 | entry1: { import: "./entryA.js", dependOn: "common" }, 6 | common: "./entryB.js", 7 | }, 8 | module: { 9 | rules: [ 10 | { 11 | test: /\.css$/, 12 | use: [Self.loader, "css-loader"], 13 | }, 14 | ], 15 | }, 16 | plugins: [ 17 | new Self({ 18 | filename: "[name].css", 19 | }), 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /test/cases/devtool-source-map-from-loaders/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | 6 | /*# sourceMappingURL=main.css.map*/ -------------------------------------------------------------------------------- /test/cases/devtool-source-map-from-loaders/expected/main.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.css","mappings":"AAAA;EACE,eAAe;AACjB","sources":["webpack:///./style.css"],"sourcesContent":["body {\n background: red;\n}\n"],"names":[],"sourceRoot":""} -------------------------------------------------------------------------------- /test/cases/devtool-source-map-from-loaders/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/devtool-source-map-from-loaders/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/devtool-source-map-no-source-maps-from-loaders/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/devtool-source-map-no-source-maps-from-loaders/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/devtool-source-map-no-source-maps-from-loaders/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/devtool-source-map/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | 6 | /*# sourceMappingURL=main.css.map*/ -------------------------------------------------------------------------------- /test/cases/devtool-source-map/expected/main.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.css","mappings":"AAAA;EACE,eAAe;AACjB","sources":["webpack:///./style.css"],"sourcesContent":["body {\n background: red;\n}\n"],"names":[],"sourceRoot":""} -------------------------------------------------------------------------------- /test/cases/devtool-source-map/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/devtool-source-map/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/devtool-source-map/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | devtool: "source-map", 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.css$/, 10 | use: [Self.loader, "css-loader"], 11 | }, 12 | ], 13 | }, 14 | plugins: [ 15 | new Self({ 16 | filename: "[name].css", 17 | }), 18 | ], 19 | }; 20 | -------------------------------------------------------------------------------- /test/cases/es-module-concatenation-modules/a.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/es-module-concatenation-modules/b.css: -------------------------------------------------------------------------------- 1 | .b { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/es-module-concatenation-modules/c.css: -------------------------------------------------------------------------------- 1 | .c { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/es-module-concatenation-modules/expected/main.css: -------------------------------------------------------------------------------- 1 | .foo__a { 2 | background: red; 3 | } 4 | 5 | .foo__b { 6 | background: green; 7 | } 8 | 9 | .foo__c { 10 | background: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/es-module-concatenation-modules/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable import/no-namespace */ 2 | import * as a from "./a.css"; 3 | import * as b from "./b.css"; 4 | 5 | import * as all from "./index"; 6 | 7 | export * from "./c.css"; 8 | export { a, b }; 9 | 10 | // eslint-disable-next-line no-console 11 | console.log(all); 12 | -------------------------------------------------------------------------------- /test/cases/es-module-concatenation/a.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/es-module-concatenation/b.css: -------------------------------------------------------------------------------- 1 | .b { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/es-module-concatenation/c.css: -------------------------------------------------------------------------------- 1 | .c { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/es-module-concatenation/expected/main.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | 5 | .b { 6 | background: green; 7 | } 8 | 9 | .c { 10 | background: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/es-module-concatenation/index.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | import "./b.css"; 3 | import "./c.css"; 4 | -------------------------------------------------------------------------------- /test/cases/es-module-syntax/expected/main.css: -------------------------------------------------------------------------------- 1 | .foo__style__a { 2 | background: red; 3 | } 4 | 5 | .foo__style__b { 6 | color: green; 7 | } 8 | 9 | .c { 10 | color: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/es-module-syntax/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/es-module-syntax/style.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | 5 | :local(.b) { 6 | color: green; 7 | } 8 | 9 | :global(.c) { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/es-named-and-default-export-1/empty.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/es-named-and-default-export-1/empty.css -------------------------------------------------------------------------------- /test/cases/es-named-and-default-export-1/expected/main.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test/cases/es-named-and-default-export-1/index.js: -------------------------------------------------------------------------------- 1 | import css from "./empty.css"; 2 | 3 | // eslint-disable-next-line no-console 4 | console.log({ css }); 5 | -------------------------------------------------------------------------------- /test/cases/es-named-and-default-export/expected/main.css: -------------------------------------------------------------------------------- 1 | .foo__style__a-class { 2 | background: red; 3 | } 4 | 5 | .foo__style__b__class { 6 | color: green; 7 | } 8 | 9 | .foo__style__cClass { 10 | color: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/es-named-and-default-export/index.js: -------------------------------------------------------------------------------- 1 | import css, { 2 | "a-class" as aClass, 3 | "b__class" as bClass, 4 | cClass, 5 | } from "./style.css"; 6 | 7 | // eslint-disable-next-line no-console 8 | console.log({ css, aClass, bClass, cClass }); 9 | -------------------------------------------------------------------------------- /test/cases/es-named-and-default-export/style.css: -------------------------------------------------------------------------------- 1 | .a-class { 2 | background: red; 3 | } 4 | 5 | .b__class { 6 | color: green; 7 | } 8 | 9 | .cClass { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/es-named-export-as-is-output-module/expected/main.css: -------------------------------------------------------------------------------- 1 | .Xh041yLR4iCP4RGjge50 { 2 | background: red; 3 | } 4 | 5 | .NMuRsxoDwvW8BhSXhFAY { 6 | color: green; 7 | } 8 | 9 | .ayWIv09rPsAqE2JznIsI { 10 | color: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/es-named-export-as-is-output-module/index.js: -------------------------------------------------------------------------------- 1 | import css, { 2 | "a-class" as aClass, 3 | "b__class" as bClass, 4 | cClass, 5 | } from "./style.css"; 6 | 7 | // eslint-disable-next-line no-console 8 | console.log({ css, aClass, bClass, cClass }); 9 | -------------------------------------------------------------------------------- /test/cases/es-named-export-as-is-output-module/style.css: -------------------------------------------------------------------------------- 1 | .a-class { 2 | background: red; 3 | } 4 | 5 | .b__class { 6 | color: green; 7 | } 8 | 9 | .cClass { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/es-named-export-as-is/expected/main.css: -------------------------------------------------------------------------------- 1 | .Xh041yLR4iCP4RGjge50 { 2 | background: red; 3 | } 4 | 5 | .NMuRsxoDwvW8BhSXhFAY { 6 | color: green; 7 | } 8 | 9 | .ayWIv09rPsAqE2JznIsI { 10 | color: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/es-named-export-as-is/index.js: -------------------------------------------------------------------------------- 1 | import css, { 2 | "a-class" as aClass, 3 | "b__class" as bClass, 4 | cClass, 5 | } from "./style.css"; 6 | 7 | // eslint-disable-next-line no-console 8 | console.log({ css, aClass, bClass, cClass }); 9 | -------------------------------------------------------------------------------- /test/cases/es-named-export-as-is/style.css: -------------------------------------------------------------------------------- 1 | .a-class { 2 | background: red; 3 | } 4 | 5 | .b__class { 6 | color: green; 7 | } 8 | 9 | .cClass { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/es-named-export-output-module/expected/main.css: -------------------------------------------------------------------------------- 1 | .foo__style__a-class { 2 | background: red; 3 | } 4 | 5 | .foo__style__b__class { 6 | color: green; 7 | } 8 | 9 | .foo__style__cClass { 10 | color: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/es-named-export-output-module/index.js: -------------------------------------------------------------------------------- 1 | import css, { aClass, bClass, cClass } from "./style.css"; 2 | 3 | // eslint-disable-next-line no-console 4 | console.log({ css, aClass, bClass, cClass }); 5 | -------------------------------------------------------------------------------- /test/cases/es-named-export-output-module/style.css: -------------------------------------------------------------------------------- 1 | .a-class { 2 | background: red; 3 | } 4 | 5 | .b__class { 6 | color: green; 7 | } 8 | 9 | .cClass { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/es-named-export/expected/main.css: -------------------------------------------------------------------------------- 1 | .foo__style__a-class { 2 | background: red; 3 | } 4 | 5 | .foo__style__b__class { 6 | color: green; 7 | } 8 | 9 | .foo__style__cClass { 10 | color: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/es-named-export/index.js: -------------------------------------------------------------------------------- 1 | import css, { aClass, bClass, cClass } from "./style.css"; 2 | 3 | // eslint-disable-next-line no-console 4 | console.log({ css, aClass, bClass, cClass }); 5 | -------------------------------------------------------------------------------- /test/cases/es-named-export/style.css: -------------------------------------------------------------------------------- 1 | .a-class { 2 | background: red; 3 | } 4 | 5 | .b__class { 6 | color: green; 7 | } 8 | 9 | .cClass { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/experimentalUseImportModule-false/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/experimentalUseImportModule-false/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/experimentalUseImportModule-false/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/experimentalUseImportModule-false/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | experimentalUseImportModule: false, 17 | }), 18 | ], 19 | }; 20 | -------------------------------------------------------------------------------- /test/cases/experimentalUseImportModule-true/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/experimentalUseImportModule-true/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/experimentalUseImportModule-true/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/experimentalUseImportModule-true/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | experimentalUseImportModule: true, 17 | }), 18 | ], 19 | }; 20 | -------------------------------------------------------------------------------- /test/cases/experimentalUseImportModule-undefined/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/experimentalUseImportModule-undefined/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/experimentalUseImportModule-undefined/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/export-only-locals-and-es-named-export/index.js: -------------------------------------------------------------------------------- 1 | import { aClass, bClass, cClass } from "./style.css"; 2 | 3 | // eslint-disable-next-line no-console 4 | console.log({ aClass, bClass, cClass }); 5 | -------------------------------------------------------------------------------- /test/cases/export-only-locals-and-es-named-export/style.css: -------------------------------------------------------------------------------- 1 | .a-class { 2 | background: red; 3 | } 4 | 5 | .b__class { 6 | color: green; 7 | } 8 | 9 | .cClass { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/export-only-locals-commonjs/index.js: -------------------------------------------------------------------------------- 1 | import { aClass, bClass, cClass } from "./style.css"; 2 | 3 | // eslint-disable-next-line no-console 4 | console.log({ aClass, bClass, cClass }); 5 | -------------------------------------------------------------------------------- /test/cases/export-only-locals-commonjs/style.css: -------------------------------------------------------------------------------- 1 | .a-class { 2 | background: red; 3 | } 4 | 5 | .b__class { 6 | color: green; 7 | } 8 | 9 | .cClass { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/export-only-locals/index.js: -------------------------------------------------------------------------------- 1 | import { aClass, bClass, cClass } from "./style.css"; 2 | 3 | // eslint-disable-next-line no-console 4 | console.log({ aClass, bClass, cClass }); 5 | -------------------------------------------------------------------------------- /test/cases/export-only-locals/style.css: -------------------------------------------------------------------------------- 1 | .a-class { 2 | background: red; 3 | } 4 | 5 | .b__class { 6 | color: green; 7 | } 8 | 9 | .cClass { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/file-loader/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(static/react.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/file-loader/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/file-loader/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/filename-as-function/expected/demo/css/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: purple; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/filename-as-function/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/filename-as-function/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: purple; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/filename-with-template/async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/filename-with-template/expected/async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/filename-with-template/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/filename-with-template/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | 3 | /* eslint-disable-next-line no-unused-expressions */ 4 | import(/* webpackChunkName: "async" */ "./async.css"); 5 | -------------------------------------------------------------------------------- /test/cases/filename-with-template/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/filename-with-template/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/filename-without-template/async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/filename-without-template/expected/0.main.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/filename-without-template/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/filename-without-template/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | 3 | /* eslint-disable-next-line no-unused-expressions */ 4 | import(/* webpackChunkName: "async" */ "./async.css"); 5 | -------------------------------------------------------------------------------- /test/cases/filename-without-template/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/filename-without-template/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "main.css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/hmr-locals/expected/main.css: -------------------------------------------------------------------------------- 1 | /*!************************************************************************************************!*\ 2 | !*** css ../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./index.css ***! 3 | \************************************************************************************************/ 4 | .VoofDB21D_QzDbRdwMiY { 5 | color: red; 6 | } 7 | 8 | -------------------------------------------------------------------------------- /test/cases/hmr-locals/index.css: -------------------------------------------------------------------------------- 1 | .x { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/hmr/a.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/hmr/b.css: -------------------------------------------------------------------------------- 1 | .b { 2 | background: red; 3 | } 4 | 5 | @import url("https://some/external/css"); 6 | 7 | .b { 8 | color: yellow; 9 | } 10 | -------------------------------------------------------------------------------- /test/cases/hmr/c.css: -------------------------------------------------------------------------------- 1 | .c { 2 | background: red; 3 | } 4 | @import "./a.css"; 5 | @import url("https://some/other/external/css"); 6 | 7 | .c { 8 | color: yellow; 9 | } 10 | -------------------------------------------------------------------------------- /test/cases/hmr/index.css: -------------------------------------------------------------------------------- 1 | @import "./c.css"; 2 | @import "./b.css"; 3 | -------------------------------------------------------------------------------- /test/cases/ignore-other-loaders-2/expected/cda29b14206471c0a745.ext: -------------------------------------------------------------------------------- 1 | .color { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignore-other-loaders-2/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/ignore-other-loaders-2/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | import "./other.ext"; 3 | -------------------------------------------------------------------------------- /test/cases/ignore-other-loaders-2/other.ext: -------------------------------------------------------------------------------- 1 | .color { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignore-other-loaders-2/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignore-other-loaders/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/ignore-other-loaders/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/ignore-other-loaders/other.css: -------------------------------------------------------------------------------- 1 | .color { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignore-other-loaders/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignoreOrder/e1.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e1"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignoreOrder/e2.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e2"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignoreOrder/expected/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e2"; 3 | } 4 | 5 | body { 6 | content: "e1"; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/ignoreOrder/index.js: -------------------------------------------------------------------------------- 1 | import "./e2.css"; 2 | import "./e1.css"; 3 | -------------------------------------------------------------------------------- /test/cases/ignoreOrder/index2.js: -------------------------------------------------------------------------------- 1 | import "./e1.css"; 2 | import "./e2.css"; 3 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalse/e1.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e1"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalse/e2.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e2"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalse/e3.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e3"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalse/expected/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e2"; 3 | } 4 | 5 | body { 6 | content: "e1"; 7 | } 8 | 9 | body { 10 | content: "e3"; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalse/index.js: -------------------------------------------------------------------------------- 1 | import "./e2.css"; 2 | import "./e1.css"; 3 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalse/index2.js: -------------------------------------------------------------------------------- 1 | import "./e1.css"; 2 | import "./e2.css"; 3 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalse/index3.js: -------------------------------------------------------------------------------- 1 | import "./e2.css"; 2 | import "./e3.css"; 3 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalseWithoutGoodChunks/e1.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e1"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalseWithoutGoodChunks/e2.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e2"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalseWithoutGoodChunks/e3.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e3"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalseWithoutGoodChunks/e4.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e4"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalseWithoutGoodChunks/expected/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e1"; 3 | } 4 | 5 | body { 6 | content: "e4"; 7 | } 8 | 9 | body { 10 | content: "e2"; 11 | } 12 | 13 | body { 14 | content: "e3"; 15 | } 16 | 17 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalseWithoutGoodChunks/index.js: -------------------------------------------------------------------------------- 1 | import "./e1.css"; 2 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalseWithoutGoodChunks/index2.js: -------------------------------------------------------------------------------- 1 | import "./e2.css"; 2 | import "./e1.css"; 3 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalseWithoutGoodChunks/index3.js: -------------------------------------------------------------------------------- 1 | import "./e3.css"; 2 | import "./e4.css"; 3 | import "./e2.css"; 4 | -------------------------------------------------------------------------------- /test/cases/ignoreOrderFalseWithoutGoodChunks/index4.js: -------------------------------------------------------------------------------- 1 | import "./e4.css"; 2 | import "./e2.css"; 3 | import "./e3.css"; 4 | -------------------------------------------------------------------------------- /test/cases/import/a.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/import/b.css: -------------------------------------------------------------------------------- 1 | .b { 2 | background: red; 3 | } 4 | 5 | @import url("https://some/external/css"); 6 | 7 | .b { 8 | color: yellow; 9 | } 10 | -------------------------------------------------------------------------------- /test/cases/import/c.css: -------------------------------------------------------------------------------- 1 | .c { 2 | background: red; 3 | } 4 | 5 | @import url("https://some/other/external/css"); 6 | 7 | .c { 8 | color: yellow; 9 | } 10 | -------------------------------------------------------------------------------- /test/cases/import/expected/main.css: -------------------------------------------------------------------------------- 1 | @import url(https://some/other/external/css); 2 | @import url(https://some/external/css); 3 | .c { 4 | background: red; 5 | } 6 | 7 | .c { 8 | color: yellow; 9 | } 10 | 11 | body { 12 | background: red; 13 | } 14 | 15 | .b { 16 | background: red; 17 | } 18 | 19 | .b { 20 | color: yellow; 21 | } 22 | 23 | -------------------------------------------------------------------------------- /test/cases/import/index.js: -------------------------------------------------------------------------------- 1 | import "./c.css"; 2 | import "./a.css"; 3 | import "./b.css"; 4 | -------------------------------------------------------------------------------- /test/cases/import/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/insert-function/expected/1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/insert-function/expected/1.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | (self["webpackChunk"] = self["webpackChunk"] || []).push([[1],[ 3 | /* 0 */, 4 | /* 1 */ 5 | /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6 | 7 | __webpack_require__.r(__webpack_exports__); 8 | // extracted by mini-css-extract-plugin 9 | 10 | 11 | /***/ }) 12 | ]]); -------------------------------------------------------------------------------- /test/cases/insert-function/src/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-env browser */ 2 | 3 | // eslint-disable-next-line 4 | import("./inject.css"); 5 | -------------------------------------------------------------------------------- /test/cases/insert-function/src/inject.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/insert-string/expected/1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/insert-string/expected/1.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | (self["webpackChunk"] = self["webpackChunk"] || []).push([[1],[ 3 | /* 0 */, 4 | /* 1 */ 5 | /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6 | 7 | __webpack_require__.r(__webpack_exports__); 8 | // extracted by mini-css-extract-plugin 9 | 10 | 11 | /***/ }) 12 | ]]); -------------------------------------------------------------------------------- /test/cases/insert-string/src/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-env browser */ 2 | 3 | // eslint-disable-next-line 4 | import("./inject.css"); 5 | -------------------------------------------------------------------------------- /test/cases/insert-string/src/inject.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/insert-undefined/expected/1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/insert-undefined/expected/1.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | (self["webpackChunk"] = self["webpackChunk"] || []).push([[1],[ 3 | /* 0 */, 4 | /* 1 */ 5 | /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6 | 7 | __webpack_require__.r(__webpack_exports__); 8 | // extracted by mini-css-extract-plugin 9 | 10 | 11 | /***/ }) 12 | ]]); -------------------------------------------------------------------------------- /test/cases/insert-undefined/src/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-env browser */ 2 | 3 | // eslint-disable-next-line 4 | import("./inject.css"); 5 | -------------------------------------------------------------------------------- /test/cases/insert-undefined/src/inject.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503-1/dark.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: black; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503-1/expected/dark.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: black; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503-1/expected/index.css: -------------------------------------------------------------------------------- 1 | @supports (display: flex) { 2 | body { 3 | background: black; 4 | } 5 | 6 | } 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503-1/index.css: -------------------------------------------------------------------------------- 1 | @import url("dark.css") supports(display: flex); 2 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503-2/dark.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: black; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503-2/expected/dark.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: black; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503-2/expected/index.css: -------------------------------------------------------------------------------- 1 | @layer framework.component { 2 | body { 3 | background: black; 4 | } 5 | 6 | } 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503-2/index.css: -------------------------------------------------------------------------------- 1 | @import url("dark.css") layer(framework.component); 2 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503/dark.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: black; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503/expected/dark.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: black; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503/expected/index.css: -------------------------------------------------------------------------------- 1 | @media (prefers-color-scheme: dark) { 2 | body { 3 | background: black; 4 | } 5 | 6 | } 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/cases/issue-css-loader-1503/index.css: -------------------------------------------------------------------------------- 1 | @import "./dark.css" (prefers-color-scheme: dark); 2 | -------------------------------------------------------------------------------- /test/cases/js-hash/expected/webpack-5-importModule/style.673556889871ee1ba393.1.css: -------------------------------------------------------------------------------- 1 | .y47aAtdWkILSHa01rP4B { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/js-hash/expected/webpack-5-importModule/style.da830ae5237422e8b8b0.2.css: -------------------------------------------------------------------------------- 1 | 2 | .y47aAtdWkILSHa01rP4B { 3 | background: green; 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/js-hash/expected/webpack-5/style.673556889871ee1ba393.1.css: -------------------------------------------------------------------------------- 1 | .y47aAtdWkILSHa01rP4B { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/js-hash/expected/webpack-5/style.da830ae5237422e8b8b0.2.css: -------------------------------------------------------------------------------- 1 | 2 | .y47aAtdWkILSHa01rP4B { 3 | background: green; 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/js-hash/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable-next-line no-unused-expressions */ 2 | import(/* webpackChunkName: "style" */ "./style.css"); 3 | -------------------------------------------------------------------------------- /test/cases/js-hash/loader.js: -------------------------------------------------------------------------------- 1 | module.exports = function loader(source) { 2 | const { number } = this.query; 3 | return source.split(/\/\* break \*\//)[number - 1]; 4 | }; 5 | -------------------------------------------------------------------------------- /test/cases/js-hash/style.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | /* break */ 5 | .a { 6 | background: green; 7 | } 8 | -------------------------------------------------------------------------------- /test/cases/moduleFilenameMutableFilename/expected/mutated.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: palegreen; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/moduleFilenameMutableFilename/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/moduleFilenameMutableFilename/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: palegreen; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/multiple-compiler/expected/one/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/multiple-compiler/expected/two/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/multiple-compiler/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/multiple-compiler/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/a.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/async-one.js: -------------------------------------------------------------------------------- 1 | import "./c.css"; 2 | import "./d.css"; 3 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/async-two.js: -------------------------------------------------------------------------------- 1 | import "./d.css"; 2 | import "./c.css"; 3 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/b.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/c.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/d.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: yellow; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/expected/async-one.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: blue; 3 | } 4 | 5 | body { 6 | background: yellow; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/expected/async-two.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: yellow; 3 | } 4 | 5 | body { 6 | background: blue; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/expected/main-one.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | body { 6 | background: green; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/expected/main-two.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | } 4 | 5 | body { 6 | background: red; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/index-one.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | import "./b.css"; 3 | 4 | /* eslint-disable-next-line no-unused-expressions */ 5 | import(/* webpackChunkName: 'async-one' */ "./async-one"); 6 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/index-two.js: -------------------------------------------------------------------------------- 1 | import "./b.css"; 2 | import "./a.css"; 3 | 4 | /* eslint-disable-next-line no-unused-expressions */ 5 | import(/* webpackChunkName: 'async-two' */ "./async-two"); 6 | -------------------------------------------------------------------------------- /test/cases/multiple-entry/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: { 5 | "main-one": "./index-one.js", 6 | "main-two": "./index-two.js", 7 | }, 8 | module: { 9 | rules: [ 10 | { 11 | test: /\.css$/, 12 | use: [Self.loader, "css-loader"], 13 | }, 14 | ], 15 | }, 16 | plugins: [ 17 | new Self({ 18 | filename: "[name].css", 19 | }), 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading-with-default-light/expected/dark.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: black; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading-with-default-light/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: white; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading-with-default-light/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading-with-default-light/src/dark-theme/_vars.scss: -------------------------------------------------------------------------------- 1 | $background: black; 2 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading-with-default-light/src/light-theme/_vars.scss: -------------------------------------------------------------------------------- 1 | $background: white; 2 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading-with-default-light/src/style.scss: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: vars.$background; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading/expected/dark.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: black; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading/expected/light.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: white; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading/src/dark-theme/_vars.scss: -------------------------------------------------------------------------------- 1 | $background: black; 2 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading/src/light-theme/_vars.scss: -------------------------------------------------------------------------------- 1 | $background: white; 2 | -------------------------------------------------------------------------------- /test/cases/multiple-themes-async-loading/src/style.scss: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: vars.$background; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/nested/a.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/nested/b.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/nested/component.css: -------------------------------------------------------------------------------- 1 | .component { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/nested/component.js: -------------------------------------------------------------------------------- 1 | import "./component.css"; 2 | -------------------------------------------------------------------------------- /test/cases/nested/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | .component { 6 | background: blue; 7 | } 8 | 9 | body { 10 | background: green; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/nested/index.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | import "./component"; 3 | import "./b.css"; 4 | -------------------------------------------------------------------------------- /test/cases/nested/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/new-url/expected/09a1a1112c577c279435.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/new-url/expected/09a1a1112c577c279435.png -------------------------------------------------------------------------------- /test/cases/new-url/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | a { 6 | background: url(09a1a1112c577c279435.png); 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/new-url/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/new-url/img.png -------------------------------------------------------------------------------- /test/cases/new-url/index.js: -------------------------------------------------------------------------------- 1 | const myURL = new URL("./style.css", import.meta.url); 2 | 3 | console.log(myURL); 4 | -------------------------------------------------------------------------------- /test/cases/new-url/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | a { 6 | background: url("./img.png"); 7 | } 8 | -------------------------------------------------------------------------------- /test/cases/new-url/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | type: "javascript/auto", 11 | }, 12 | ], 13 | }, 14 | plugins: [ 15 | new Self({ 16 | filename: "[name].css", 17 | }), 18 | ], 19 | }; 20 | -------------------------------------------------------------------------------- /test/cases/no-identifier/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/no-identifier/style.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | 5 | :local(.b) { 6 | color: green; 7 | } 8 | 9 | :global(.c) { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/no-loader/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/no-loader/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/no-loader/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: ["css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/no-runtime/async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/no-runtime/expected/async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/no-runtime/expected/async.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | (self["webpackChunk"] = self["webpackChunk"] || []).push([[0],{ 3 | 4 | /***/ 2: 5 | /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6 | 7 | __webpack_require__.r(__webpack_exports__); 8 | // extracted by mini-css-extract-plugin 9 | 10 | 11 | /***/ }) 12 | 13 | }]); -------------------------------------------------------------------------------- /test/cases/no-runtime/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/no-runtime/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | 3 | import(/* webpackChunkName: "async" */ "./async.css"); 4 | -------------------------------------------------------------------------------- /test/cases/no-runtime/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/no-runtime/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | runtime: false, 17 | }), 18 | ], 19 | }; 20 | -------------------------------------------------------------------------------- /test/cases/no-source-map/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/no-source-map/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/no-source-map/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/output-iife/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/output-iife/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/output-iife/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/output-iife/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | output: { 14 | iife: false, 15 | }, 16 | plugins: [ 17 | new Self({ 18 | filename: "[name].css", 19 | }), 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /test/cases/output-module/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/output-module/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/output-module/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/pathinfo-devtool-source-map/expected/main.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.css","mappings":";;;AAAA;EACE,eAAe;AACjB;;;;;ACFA;EACE,gBAAgB;AAClB;;;;;ACFA;EACE,kBAAkB;AACpB","sources":["webpack:///./style.css","webpack:///./other.css","webpack:///./extra.css"],"sourcesContent":["body {\n background: red;\n}\n","body {\n background: blue;\n}\n","body {\n background: yellow;\n}\n"],"names":[],"sourceRoot":""} -------------------------------------------------------------------------------- /test/cases/pathinfo-devtool-source-map/extra.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: yellow; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/pathinfo-devtool-source-map/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | import "./other.css"; 3 | import "./extra.css"; 4 | -------------------------------------------------------------------------------- /test/cases/pathinfo-devtool-source-map/other.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/pathinfo-devtool-source-map/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/pathinfo/extra.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: yellow; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/pathinfo/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | import "./other.css"; 3 | import "./extra.css"; 4 | -------------------------------------------------------------------------------- /test/cases/pathinfo/other.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/pathinfo/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/pathinfo/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | output: { 6 | pathinfo: true, 7 | }, 8 | module: { 9 | rules: [ 10 | { 11 | test: /\.css$/, 12 | use: [Self.loader, "css-loader"], 13 | }, 14 | ], 15 | }, 16 | plugins: [ 17 | new Self({ 18 | filename: "[name].css", 19 | }), 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload-hmr/a.css: -------------------------------------------------------------------------------- 1 | .a { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload-hmr/b.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/prefetch-preload-hmr/b.js -------------------------------------------------------------------------------- /test/cases/prefetch-preload-hmr/expected/main.css: -------------------------------------------------------------------------------- 1 | .a { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload-hmr/index.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | 3 | import(/* webpackPrefetch: true */ "./b"); 4 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/a.css: -------------------------------------------------------------------------------- 1 | .a { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/b.js: -------------------------------------------------------------------------------- 1 | import(/* webpackPrefetch: true, webpackChunkName: "b1" */ "./b1.css"); 2 | import(/* webpackPreload: true, webpackChunkName: "b2" */ "./b2.css"); 3 | import(/* webpackPrefetch: true, webpackChunkName: "b3" */ "./b3"); 4 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/b1.css: -------------------------------------------------------------------------------- 1 | .b1 { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/b2.css: -------------------------------------------------------------------------------- 1 | .b2 { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/b3.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/prefetch-preload/b3.js -------------------------------------------------------------------------------- /test/cases/prefetch-preload/c.js: -------------------------------------------------------------------------------- 1 | import(/* webpackPreload: true, webpackChunkName: "c1" */ "./c1.css"); 2 | import(/* webpackPreload: true, webpackChunkName: "c2" */ "./c2.css"); 3 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/c1.css: -------------------------------------------------------------------------------- 1 | .c1 { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/c2.css: -------------------------------------------------------------------------------- 1 | .c2 { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/expected/a.css: -------------------------------------------------------------------------------- 1 | .a { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/expected/b1.css: -------------------------------------------------------------------------------- 1 | .b1 { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/expected/b2.css: -------------------------------------------------------------------------------- 1 | .b2 { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/expected/c.js: -------------------------------------------------------------------------------- 1 | (self["webpackChunk"] = self["webpackChunk"] || []).push([[5],{ 2 | 3 | /***/ 3: 4 | /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { 5 | 6 | __webpack_require__.e(/* import() | c1 */ 6).then(__webpack_require__.bind(__webpack_require__, 7)); 7 | __webpack_require__.e(/* import() | c2 */ 7).then(__webpack_require__.bind(__webpack_require__, 8)); 8 | 9 | 10 | /***/ }) 11 | 12 | }]); -------------------------------------------------------------------------------- /test/cases/prefetch-preload/expected/c1.css: -------------------------------------------------------------------------------- 1 | .c1 { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/expected/c2.css: -------------------------------------------------------------------------------- 1 | .c2 { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/index.js: -------------------------------------------------------------------------------- 1 | import(/* webpackPrefetch: true, webpackChunkName: "a" */ "./a.css"); 2 | import(/* webpackPrefetch: true, webpackChunkName: "b" */ "./b"); 3 | import(/* webpackPrefetch: true, webpackChunkName: "c" */ "./c"); 4 | -------------------------------------------------------------------------------- /test/cases/prefetch-preload/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-1/expected/webpack-5-importModule/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(https://webpack.js.org/foo/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-1/expected/webpack-5/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(https://webpack.js.org/../foo/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-1/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-1/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-2/expected/webpack-5-importModule/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(https://webpack.js.org/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-2/expected/webpack-5/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(https://webpack.js.org/foo/../c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-2/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-2/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-3/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(https://webpack.js.org./c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-3/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-3/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-4/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(https://webpack.js.org../c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-4/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-4/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-5/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-5/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-5/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-6/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(//cdn.example.com/assets/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-6/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url-6/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(https://webpack.js.org/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-absolute-url/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto-2/expected/styles/main.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background-image: url(../same_root.svg); 3 | } 4 | 5 | .b { 6 | background-image: url(../styles/same_dir.svg); 7 | } 8 | 9 | .c { 10 | background-image: url(../styles/nested/nested_dir.svg); 11 | } 12 | 13 | .d { 14 | background-image: url(../../outer.svg); 15 | } 16 | 17 | .e { 18 | background-image: url(../assets/img/react.svg); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto-2/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto-2/style.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background-image: url(./same_root.svg); 3 | } 4 | 5 | .b { 6 | background-image: url(./same_dir.svg); 7 | } 8 | 9 | .c { 10 | background-image: url(./nested_dir.svg); 11 | } 12 | 13 | .d { 14 | background-image: url(./outer.svg); 15 | } 16 | 17 | .e { 18 | background-image: url(./images/react.svg); 19 | } 20 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto-3/expected/main.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background-image: url(img1.svg); 3 | } 4 | 5 | .b { 6 | background-image: url(assets/img2.svg); 7 | } 8 | 9 | .c { 10 | background-image: url(assets/nested/img3.svg); 11 | } 12 | 13 | .d { 14 | background-image: url(img4.svg); 15 | } 16 | 17 | .e { 18 | background-image: url(assets/img/react.svg); 19 | } 20 | 21 | .f { 22 | background-image: url(../outer.svg); 23 | } 24 | 25 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto-3/index.js: -------------------------------------------------------------------------------- 1 | import "./src/styles/style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto-3/src/styles/style.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background-image: url(img1.svg); 3 | } 4 | 5 | .b { 6 | background-image: url(../../img2.svg); 7 | } 8 | 9 | .c { 10 | background-image: url(../../img3.svg); 11 | } 12 | 13 | .d { 14 | background-image: url(img/img4.svg); 15 | } 16 | 17 | .e { 18 | background-image: url(../../images/react.svg); 19 | } 20 | 21 | .f { 22 | background-image: url(../../outer.svg); 23 | } 24 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto-4/app/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/publicpath-auto-4/app/img.png -------------------------------------------------------------------------------- /test/cases/publicpath-auto-4/app/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto-4/app/nested/nested-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/publicpath-auto-4/app/nested/nested-img.png -------------------------------------------------------------------------------- /test/cases/publicpath-auto-4/app/style.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: url("./img.png"); 3 | } 4 | 5 | .b { 6 | background: url("../outer-img.png"); 7 | } 8 | 9 | .c { 10 | background: url("./nested/nested-img.png"); 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto-4/expected/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/publicpath-auto-4/expected/img.png -------------------------------------------------------------------------------- /test/cases/publicpath-auto-4/expected/main.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: url(img.png); 3 | } 4 | 5 | .b { 6 | background: url(../outer-img.png); 7 | } 8 | 9 | .c { 10 | background: url(nested/nested-img.png); 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto-4/expected/nested/nested-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/publicpath-auto-4/expected/nested/nested-img.png -------------------------------------------------------------------------------- /test/cases/publicpath-auto-4/outer-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/cases/publicpath-auto-4/outer-img.png -------------------------------------------------------------------------------- /test/cases/publicpath-auto/expected/webpack-5-importModule/styles/1f2bc28d72f2b4b52ca6/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(../../assets/react.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto/expected/webpack-5/styles/f46d3be95d50e953356d/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(../../assets/react.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-auto/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-default-auto/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-default-auto/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-default-auto/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-default-auto/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | output: { 6 | publicPath: "auto", 7 | }, 8 | module: { 9 | rules: [ 10 | { 11 | test: /\.css$/, 12 | use: [Self.loader, "css-loader"], 13 | }, 14 | ], 15 | }, 16 | plugins: [ 17 | new Self({ 18 | filename: "[name].css", 19 | }), 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /test/cases/publicpath-empty-string/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-empty-string/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-empty-string/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-function-2/expected/webpack-5-importModule/nested/again/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | background-image: url(http://example.com/XXXX/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-function-2/expected/webpack-5-importModule/nested/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(http://example.com/XXXX/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-function-2/expected/webpack-5/nested/again/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | background-image: url(http://example.com/b284f5dc5823af841415/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-function-2/expected/webpack-5/nested/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(http://example.com/405f78bf9e607b76da4a/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-function-2/nested/again/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | background-image: url(../../react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-function-2/nested/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(../react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-function/expected/nested/again/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | background-image: url(../../c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-function/expected/nested/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(../c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-function/nested/again/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | background-image: url(../../react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-function/nested/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(../react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-loader-auto/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-loader-auto/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-loader-auto/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-1/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(/static/img/../deepc9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-1/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-1/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-2/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(../c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-2/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-2/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-3/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-3/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-3/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-4/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-4/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-4/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-5/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(../static/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-5/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-5/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-6/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./static/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-6/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-6/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-7/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(staticc9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-7/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative-7/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(/static/img/c9e192c015437a21dea1.svg); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/publicpath-path-relative/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/runtime/async.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line no-console 2 | console.log("HERE"); 3 | -------------------------------------------------------------------------------- /test/cases/runtime/expected/main.a45a4571ab5cece12cf0.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/runtime/index.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-unresolved 2 | import "./style.css"; 3 | 4 | import("./async"); 5 | -------------------------------------------------------------------------------- /test/cases/runtime/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/shared-import/a.css: -------------------------------------------------------------------------------- 1 | @import "./shared.css"; 2 | 3 | .shared { 4 | color: red; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/shared-import/b.css: -------------------------------------------------------------------------------- 1 | @import "./shared.css"; 2 | 3 | .shared { 4 | background-color: red; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/shared-import/c.css: -------------------------------------------------------------------------------- 1 | @import "./shared.css"; 2 | 3 | .shared { 4 | border: 1px solid red; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/shared-import/expected/1.css: -------------------------------------------------------------------------------- 1 | .shared { 2 | border: 1px solid red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/shared-import/expected/main.css: -------------------------------------------------------------------------------- 1 | .shared { 2 | color: green; 3 | background-color: green; 4 | border: 1px solid green; 5 | } 6 | 7 | .shared { 8 | color: red; 9 | } 10 | 11 | .shared { 12 | background-color: red; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /test/cases/shared-import/index.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | import "./b.css"; 3 | 4 | /* eslint-disable-next-line no-unused-expressions */ 5 | import("./c.css"); 6 | -------------------------------------------------------------------------------- /test/cases/shared-import/shared.css: -------------------------------------------------------------------------------- 1 | .shared { 2 | color: green; 3 | background-color: green; 4 | border: 1px solid green; 5 | } 6 | -------------------------------------------------------------------------------- /test/cases/shared-import/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/a.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/async-one.js: -------------------------------------------------------------------------------- 1 | import "./c.css"; 2 | import "./d.css"; 3 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/async-two.js: -------------------------------------------------------------------------------- 1 | import "./e.css"; 2 | import "./f.css"; 3 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/b.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/c.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/d.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: yellow; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/e.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: purple; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/expected/async-one.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: blue; 3 | } 4 | 5 | body { 6 | background: yellow; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/expected/async-two.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: purple; 3 | } 4 | 5 | body { 6 | background: indigo; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | body { 6 | background: green; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/f.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: indigo; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css-fallback/index.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | import "./b.css"; 3 | 4 | /* eslint-disable-next-line no-unused-expressions */ 5 | import(/* webpackChunkName: 'async-one' */ "./async-one"); 6 | /* eslint-disable-next-line no-unused-expressions */ 7 | import(/* webpackChunkName: 'async-two' */ "./async-two"); 8 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/a.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/async-one.js: -------------------------------------------------------------------------------- 1 | import "./c.css"; 2 | import "./d.css"; 3 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/async-two.js: -------------------------------------------------------------------------------- 1 | import "./e.css"; 2 | import "./f.css"; 3 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/b.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/c.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/d.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: yellow; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/e.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: purple; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/expected/async-one.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: blue; 3 | } 4 | 5 | body { 6 | background: yellow; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/expected/async-two.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: purple; 3 | } 4 | 5 | body { 6 | background: indigo; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | body { 6 | background: green; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/f.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: indigo; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/index.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | import "./b.css"; 3 | 4 | /* eslint-disable-next-line no-unused-expressions */ 5 | import(/* webpackChunkName: 'async-one' */ "./async-one"); 6 | /* eslint-disable-next-line no-unused-expressions */ 7 | import(/* webpackChunkName: 'async-two' */ "./async-two"); 8 | -------------------------------------------------------------------------------- /test/cases/simple-async-load-css/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: { 5 | main: "./index.js", 6 | }, 7 | module: { 8 | rules: [ 9 | { 10 | test: /\.css$/, 11 | use: [Self.loader, "css-loader"], 12 | }, 13 | ], 14 | }, 15 | plugins: [ 16 | new Self({ 17 | filename: "[name].css", 18 | }), 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/async.js: -------------------------------------------------------------------------------- 1 | import "./in-async.css"; 2 | -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/expected/1.css: -------------------------------------------------------------------------------- 1 | .in-async { 2 | background: green; 3 | } 4 | 5 | 6 | /*# sourceMappingURL=1.css.map*/ -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/expected/1.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"1.css","mappings":"AAAA;EACE,iBAAiB;AACnB","sources":["webpack:///./in-async.css"],"sourcesContent":[".in-async {\n background: green;\n}\n"],"names":[],"sourceRoot":""} -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/expected/2.css: -------------------------------------------------------------------------------- 1 | .async { 2 | background: blue; 3 | } 4 | 5 | 6 | /*# sourceMappingURL=2.css.map*/ -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/expected/2.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"2.css","mappings":"AAAA;EACE,gBAAgB;AAClB","sources":["webpack:///./async.css"],"sourcesContent":[".async {\n background: blue;\n}\n"],"names":[],"sourceRoot":""} -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | 6 | /*# sourceMappingURL=main.css.map*/ -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/expected/main.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.css","mappings":"AAAA;EACE,eAAe;AACjB","sources":["webpack:///./main.css"],"sourcesContent":["body {\n background: red;\n}\n"],"names":[],"sourceRoot":""} -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/in-async.css: -------------------------------------------------------------------------------- 1 | .in-async { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/index.js: -------------------------------------------------------------------------------- 1 | import "./main.css"; 2 | 3 | /* eslint-disable-next-line no-unused-expressions */ 4 | import("./async"); 5 | 6 | /* eslint-disable-next-line no-unused-expressions */ 7 | import("./async.css"); 8 | -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async-source-map/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | devtool: "source-map", 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.css$/, 10 | use: [Self.loader, "css-loader"], 11 | }, 12 | ], 13 | }, 14 | plugins: [ 15 | new Self({ 16 | filename: "[name].css", 17 | }), 18 | ], 19 | }; 20 | -------------------------------------------------------------------------------- /test/cases/simple-async/async.css: -------------------------------------------------------------------------------- 1 | .async { 2 | background: blue; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async/async.js: -------------------------------------------------------------------------------- 1 | import "./in-async.css"; 2 | -------------------------------------------------------------------------------- /test/cases/simple-async/expected/1.css: -------------------------------------------------------------------------------- 1 | .in-async { 2 | background: green; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/simple-async/expected/2.css: -------------------------------------------------------------------------------- 1 | .async { 2 | background: blue; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/simple-async/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/simple-async/in-async.css: -------------------------------------------------------------------------------- 1 | .in-async { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async/index.js: -------------------------------------------------------------------------------- 1 | import "./main.css"; 2 | 3 | /* eslint-disable-next-line no-unused-expressions */ 4 | import("./async"); 5 | 6 | /* eslint-disable-next-line no-unused-expressions */ 7 | import("./async.css"); 8 | -------------------------------------------------------------------------------- /test/cases/simple-async/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-async/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/simple-commonjs-syntax/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/simple-commonjs-syntax/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/simple-commonjs-syntax/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-global/expected/main.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | 5 | .foo__style__b { 6 | color: green; 7 | } 8 | 9 | .c { 10 | color: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-global/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-global/style.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | 5 | :local(.b) { 6 | color: green; 7 | } 8 | 9 | :global(.c) { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-local-output-module/expected/main.css: -------------------------------------------------------------------------------- 1 | .foo__style__a { 2 | background: red; 3 | } 4 | 5 | .foo__style__b { 6 | color: green; 7 | } 8 | 9 | .c { 10 | color: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-local-output-module/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-local-output-module/style.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | 5 | :local(.b) { 6 | color: green; 7 | } 8 | 9 | :global(.c) { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-local/expected/main.css: -------------------------------------------------------------------------------- 1 | .foo__style__a { 2 | background: red; 3 | } 4 | 5 | .foo__style__b { 6 | color: green; 7 | } 8 | 9 | .c { 10 | color: blue; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-local/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-local/style.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | 5 | :local(.b) { 6 | color: green; 7 | } 8 | 9 | :global(.c) { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-pure/expected/main.css: -------------------------------------------------------------------------------- 1 | .foo__style__a { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-pure/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/simple-css-modules-mode-pure/style.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-es-module-syntax/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/simple-es-module-syntax/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/simple-es-module-syntax/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-multiple/a.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-multiple/b.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple-multiple/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | body { 6 | background: green; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/simple-multiple/index.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | import "./b.css"; 3 | -------------------------------------------------------------------------------- /test/cases/simple-multiple/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/simple/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/simple/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/simple/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/simple/webpack.config.js: -------------------------------------------------------------------------------- 1 | import Self from "../../../src"; 2 | 3 | module.exports = { 4 | entry: "./index.js", 5 | module: { 6 | rules: [ 7 | { 8 | test: /\.css$/, 9 | use: [Self.loader, "css-loader"], 10 | }, 11 | ], 12 | }, 13 | plugins: [ 14 | new Self({ 15 | filename: "[name].css", 16 | }), 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /test/cases/source-map/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | 6 | /*# sourceMappingURL=main.css.map*/ -------------------------------------------------------------------------------- /test/cases/source-map/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/source-map/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-all/a.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-all/b.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-all/expected/2.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-all/expected/2.js: -------------------------------------------------------------------------------- 1 | MISSING 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-all/index.js: -------------------------------------------------------------------------------- 1 | import "./style.css"; 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-all/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/a.css: -------------------------------------------------------------------------------- 1 | .class_a { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/a.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | 3 | import(/* webpackChunkName: "common" */ "./common"); 4 | 5 | import(/* webpackChunkName: "comp1" */ "./components/comp1"); 6 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/b.css: -------------------------------------------------------------------------------- 1 | .class_b { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/b.js: -------------------------------------------------------------------------------- 1 | import "./b.css"; 2 | 3 | import(/* webpackChunkName: "common" */ "./common"); 4 | 5 | import(/* webpackChunkName: "comp2" */ "./components/comp2"); 6 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/common.css: -------------------------------------------------------------------------------- 1 | .common { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/common.js: -------------------------------------------------------------------------------- 1 | import "./common.css"; 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/components/comp1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: yellow; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/components/comp1.js: -------------------------------------------------------------------------------- 1 | import "./comp1.css"; 2 | 3 | import(/* webpackChunkName: "common" */ "../common"); 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/components/comp2.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/components/comp2.js: -------------------------------------------------------------------------------- 1 | import "./comp2.css"; 2 | 3 | import(/* webpackChunkName: "common" */ "../common"); 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/expected/a/index.css: -------------------------------------------------------------------------------- 1 | .class_a { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/expected/b/index.css: -------------------------------------------------------------------------------- 1 | .class_b { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/expected/common/index.css: -------------------------------------------------------------------------------- 1 | .common { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/expected/comp1/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: yellow; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk-and-inside-dir/expected/comp2/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: green; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/a.css: -------------------------------------------------------------------------------- 1 | .class_a { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/a.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | 3 | import(/* webpackChunkName: "common" */ "./common"); 4 | 5 | import(/* webpackChunkName: "comp1" */ "./components/comp1"); 6 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/b.css: -------------------------------------------------------------------------------- 1 | .class_b { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/b.js: -------------------------------------------------------------------------------- 1 | import "./b.css"; 2 | 3 | import(/* webpackChunkName: "common" */ "./common"); 4 | 5 | import(/* webpackChunkName: "comp2" */ "./components/comp2"); 6 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/common.css: -------------------------------------------------------------------------------- 1 | .common { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/common.js: -------------------------------------------------------------------------------- 1 | import "./common.css"; 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/components/comp1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: yellow; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/components/comp1.js: -------------------------------------------------------------------------------- 1 | import "./comp1.css"; 2 | 3 | import(/* webpackChunkName: "common" */ "../common"); 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/components/comp2.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/components/comp2.js: -------------------------------------------------------------------------------- 1 | import "./comp2.css"; 2 | 3 | import(/* webpackChunkName: "common" */ "../common"); 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/expected/common.css: -------------------------------------------------------------------------------- 1 | .common { 2 | color: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/expected/comp1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: yellow; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/expected/comp2.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: green; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/expected/styles_a.css: -------------------------------------------------------------------------------- 1 | .class_a { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-chunk/expected/styles_b.css: -------------------------------------------------------------------------------- 1 | .class_b { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/a.css: -------------------------------------------------------------------------------- 1 | .class_a { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/a.js: -------------------------------------------------------------------------------- 1 | import "./common.css"; 2 | import "./a.css"; 3 | 4 | import(/* webpackChunkName: "comp1" */ "./components/comp1"); 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/b.css: -------------------------------------------------------------------------------- 1 | .class_b { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/b.js: -------------------------------------------------------------------------------- 1 | import "./common.css"; 2 | import "./b.css"; 3 | 4 | import(/* webpackChunkName: "comp2" */ "./components/comp2"); 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/common.css: -------------------------------------------------------------------------------- 1 | .common { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/components/comp1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: yellow; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/components/comp1.js: -------------------------------------------------------------------------------- 1 | import "./comp1.css"; 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/components/comp2.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/components/comp2.js: -------------------------------------------------------------------------------- 1 | import "./comp2.css"; 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/expected/comp1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: yellow; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/expected/comp2.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: green; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/expected/styles_a.css: -------------------------------------------------------------------------------- 1 | .common { 2 | background: red; 3 | } 4 | 5 | .class_a { 6 | background: red; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry-with-common-in-each-chunk/expected/styles_b.css: -------------------------------------------------------------------------------- 1 | .common { 2 | background: red; 3 | } 4 | 5 | .class_b { 6 | background: red; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/a.css: -------------------------------------------------------------------------------- 1 | .class_a { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/a.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | 3 | import(/* webpackChunkName: "comp1" */ "./components/comp1"); 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/b.css: -------------------------------------------------------------------------------- 1 | .class_b { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/b.js: -------------------------------------------------------------------------------- 1 | import "./b.css"; 2 | 3 | import(/* webpackChunkName: "comp2" */ "./components/comp2"); 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/components/comp1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: yellow; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/components/comp1.js: -------------------------------------------------------------------------------- 1 | import "./comp1.css"; 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/components/comp2.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/components/comp2.js: -------------------------------------------------------------------------------- 1 | import "./comp2.css"; 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/expected/comp1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: yellow; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/expected/comp2.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: green; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/expected/styles_a.css: -------------------------------------------------------------------------------- 1 | .class_a { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-based-on-entry/expected/styles_b.css: -------------------------------------------------------------------------------- 1 | .class_b { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-no-vendor/expected/bundle.css: -------------------------------------------------------------------------------- 1 | /* This could be bootstrap.css */ 2 | body { 3 | background: green; 4 | } 5 | 6 | body { 7 | background: red; 8 | } 9 | 10 | .async { 11 | color: red; 12 | } 13 | 14 | -------------------------------------------------------------------------------- /test/cases/split-chunks-no-vendor/index.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-extraneous-dependencies 2 | import "bootstrap/bootstrap.css"; 3 | import "./style.css"; 4 | 5 | // eslint-disable-next-line import/first 6 | import "package/index"; 7 | 8 | import("other-css/other.css"); 9 | -------------------------------------------------------------------------------- /test/cases/split-chunks-no-vendor/node_modules/bootstrap/bootstrap.css: -------------------------------------------------------------------------------- 1 | /* This could be bootstrap.css */ 2 | body { 3 | background: green; 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks-no-vendor/node_modules/other-css/other.css: -------------------------------------------------------------------------------- 1 | .async { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-no-vendor/node_modules/package/index.js: -------------------------------------------------------------------------------- 1 | console.log("HERE"); 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-no-vendor/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-recursiveIssuer/a.css: -------------------------------------------------------------------------------- 1 | .class_a { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-recursiveIssuer/a.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | 3 | import(/* webpackChunkName: "comp1" */ "./components/comp1"); 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-recursiveIssuer/b.css: -------------------------------------------------------------------------------- 1 | .class_b { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-recursiveIssuer/b.js: -------------------------------------------------------------------------------- 1 | import "./b.css"; 2 | 3 | import(/* webpackChunkName: "comp2" */ "./components/comp2"); 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-recursiveIssuer/components/comp1.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: yellow; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-recursiveIssuer/components/comp1.js: -------------------------------------------------------------------------------- 1 | import "./comp1.css"; 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-recursiveIssuer/components/comp2.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-recursiveIssuer/components/comp2.js: -------------------------------------------------------------------------------- 1 | import "./comp2.css"; 2 | -------------------------------------------------------------------------------- /test/cases/split-chunks-recursiveIssuer/expected/styles_a.css: -------------------------------------------------------------------------------- 1 | .class_a { 2 | background: red; 3 | } 4 | 5 | body { 6 | background-color: yellow; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/split-chunks-recursiveIssuer/expected/styles_b.css: -------------------------------------------------------------------------------- 1 | .class_b { 2 | background: red; 3 | } 4 | 5 | body { 6 | background-color: green; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/a.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "a"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/b.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "b"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/c.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "c"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/chunk1.js: -------------------------------------------------------------------------------- 1 | import "./c.css"; 2 | import "./d.css"; 3 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/chunk2.js: -------------------------------------------------------------------------------- 1 | import "./d.css"; 2 | import "./h.css"; 3 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/d.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "d"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/e1.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e1"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/e2.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "e2"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/entry1.js: -------------------------------------------------------------------------------- 1 | import "./a.css"; 2 | import "./e1.css"; 3 | import "./e2.css"; 4 | import "./f.css"; 5 | 6 | /* eslint-disable-next-line no-unused-expressions */ 7 | import("./chunk1"); 8 | /* eslint-disable-next-line no-unused-expressions */ 9 | import("./chunk2"); 10 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/entry2.js: -------------------------------------------------------------------------------- 1 | import "./b.css"; 2 | import "./e2.css"; 3 | import "./e1.css"; 4 | import "./g.css"; 5 | import "./h.css"; 6 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/expected/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "a"; 3 | } 4 | 5 | body { 6 | content: "b"; 7 | } 8 | 9 | body { 10 | content: "c"; 11 | } 12 | 13 | body { 14 | content: "d"; 15 | } 16 | 17 | body { 18 | content: "e1"; 19 | } 20 | 21 | body { 22 | content: "e2"; 23 | } 24 | 25 | body { 26 | content: "f"; 27 | } 28 | 29 | body { 30 | content: "g"; 31 | } 32 | 33 | body { 34 | content: "h"; 35 | } 36 | 37 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/f.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "f"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/g.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "g"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/h.css: -------------------------------------------------------------------------------- 1 | body { 2 | content: "h"; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks-single/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks/expected/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks/expected/vendors.css: -------------------------------------------------------------------------------- 1 | /* This could be bootstrap.css */ 2 | body { 3 | background: green; 4 | } 5 | 6 | -------------------------------------------------------------------------------- /test/cases/split-chunks/index.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-extraneous-dependencies 2 | import "bootstrap.css"; 3 | import "./style.css"; 4 | -------------------------------------------------------------------------------- /test/cases/split-chunks/node_modules/bootstrap.css: -------------------------------------------------------------------------------- 1 | /* This could be bootstrap.css */ 2 | body { 3 | background: green; 4 | } 5 | -------------------------------------------------------------------------------- /test/cases/split-chunks/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/attributes.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable-next-line no-unused-expressions */ 2 | import(/* webpackChunkName: "simple" */ './simple.css'); 3 | -------------------------------------------------------------------------------- /test/fixtures/esm.js: -------------------------------------------------------------------------------- 1 | import "./simple.css"; 2 | -------------------------------------------------------------------------------- /test/fixtures/insert.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable-next-line no-unused-expressions */ 2 | import(/* webpackChunkName: "simple" */ './simple.css'); 3 | -------------------------------------------------------------------------------- /test/fixtures/locals.js: -------------------------------------------------------------------------------- 1 | import './locals/index.css'; 2 | import html from './locals/template.js'; 3 | 4 | document.body.textContent = html; 5 | -------------------------------------------------------------------------------- /test/fixtures/locals/index.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | color: red; 3 | } 4 | 5 | .bar { 6 | color: coral; 7 | } 8 | 9 | .baz { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/fixtures/locals/template.js: -------------------------------------------------------------------------------- 1 | import css from './index.css'; 2 | 3 | let html = '\n'; 4 | 5 | for (const key in css) { 6 | html += `css.${key}: ${css[key]}\n`; 7 | } 8 | 9 | export default html; 10 | -------------------------------------------------------------------------------- /test/fixtures/no-nonce.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable-next-line no-unused-expressions */ 2 | import(/* webpackChunkName: "simple" */ './simple.css'); 3 | -------------------------------------------------------------------------------- /test/fixtures/nonce.js: -------------------------------------------------------------------------------- 1 | __webpack_nonce__ = 'THE_NONCE'; 2 | 3 | /* eslint-disable-next-line no-unused-expressions */ 4 | import(/* webpackChunkName: "simple" */ './simple.css'); 5 | -------------------------------------------------------------------------------- /test/fixtures/simple.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/simple.js: -------------------------------------------------------------------------------- 1 | import './simple.css'; 2 | 3 | console.log('HERE'); 4 | -------------------------------------------------------------------------------- /test/fixtures/style-url.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: red; 3 | background-image: url(./react.svg); 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/style-url.js: -------------------------------------------------------------------------------- 1 | import './style-url.css'; 2 | -------------------------------------------------------------------------------- /test/helpers/compile.js: -------------------------------------------------------------------------------- 1 | export default (compiler) => 2 | new Promise((resolve, reject) => { 3 | compiler.run((error, stats) => { 4 | if (error) { 5 | return reject(error); 6 | } 7 | 8 | return resolve(stats); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /test/helpers/getErrors.js: -------------------------------------------------------------------------------- 1 | import normalizeErrors from "./normalizeErrors"; 2 | 3 | export default (stats) => normalizeErrors(stats.compilation.errors); 4 | -------------------------------------------------------------------------------- /test/helpers/getWarnings.js: -------------------------------------------------------------------------------- 1 | import normalizeErrors from "./normalizeErrors"; 2 | 3 | export default (stats) => normalizeErrors(stats.compilation.warnings); 4 | -------------------------------------------------------------------------------- /test/helpers/index.js: -------------------------------------------------------------------------------- 1 | import compile from "./compile"; 2 | import getCompiler from "./getCompiler"; 3 | import source from "./source"; 4 | import readAsset from "./readAsset"; 5 | import runInJsDom from "./runInJsDom"; 6 | import getErrors from "./getErrors"; 7 | import getWarnings from "./getWarnings"; 8 | 9 | export { 10 | source, 11 | compile, 12 | getCompiler, 13 | readAsset, 14 | runInJsDom, 15 | getErrors, 16 | getWarnings, 17 | }; 18 | -------------------------------------------------------------------------------- /test/helpers/yn.js: -------------------------------------------------------------------------------- 1 | function yn(value, defaultValue = false) { 2 | if (/^(?:y|yes|true|1|on)$/i.test(value)) { 3 | return true; 4 | } 5 | 6 | if (/^(?:n|no|false|0|off)$/i.test(value)) { 7 | return false; 8 | } 9 | 10 | return defaultValue; 11 | } 12 | 13 | module.exports = yn; 14 | -------------------------------------------------------------------------------- /test/manual/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webpack-contrib/mini-css-extract-plugin/6351aa323704a5e6d2c21be2ead2ddb356ba1ba0/test/manual/README.md -------------------------------------------------------------------------------- /test/manual/src/crossorigin.css: -------------------------------------------------------------------------------- 1 | .crossorigin { 2 | background: lightgreen; 3 | } 4 | -------------------------------------------------------------------------------- /test/manual/src/crossorigin.js: -------------------------------------------------------------------------------- 1 | import "./crossorigin.css"; 2 | -------------------------------------------------------------------------------- /test/manual/src/initial.css: -------------------------------------------------------------------------------- 1 | .initial-css { 2 | background: lightgreen; 3 | } 4 | -------------------------------------------------------------------------------- /test/manual/src/lazy-failure.css: -------------------------------------------------------------------------------- 1 | .lazy-failure-css { 2 | background: aqua; 3 | } 4 | -------------------------------------------------------------------------------- /test/manual/src/lazy-failure.js: -------------------------------------------------------------------------------- 1 | /* eslint-env browser */ 2 | 3 | import "./lazy-failure.css"; 4 | -------------------------------------------------------------------------------- /test/manual/src/lazy.css: -------------------------------------------------------------------------------- 1 | .lazy-css { 2 | background: lightgreen; 3 | } 4 | -------------------------------------------------------------------------------- /test/manual/src/lazy.js: -------------------------------------------------------------------------------- 1 | /* eslint-env browser */ 2 | 3 | import "./lazy.css"; 4 | -------------------------------------------------------------------------------- /test/manual/src/lazy.module.css: -------------------------------------------------------------------------------- 1 | .style { 2 | background: lightgreen; 3 | } 4 | -------------------------------------------------------------------------------- /test/manual/src/lazy2.css: -------------------------------------------------------------------------------- 1 | .lazy-css { 2 | background: peru; 3 | } 4 | -------------------------------------------------------------------------------- /test/manual/src/prefetch.css: -------------------------------------------------------------------------------- 1 | .prefetch { 2 | background: lightgreen !important; 3 | } 4 | -------------------------------------------------------------------------------- /test/manual/src/preload.css: -------------------------------------------------------------------------------- 1 | .preload { 2 | background: lightgreen !important; 3 | } 4 | -------------------------------------------------------------------------------- /test/manual/src/preload.js: -------------------------------------------------------------------------------- 1 | async function load() { 2 | setTimeout(() => { 3 | import(/* webpackPreload: true */ "./preload.css"); 4 | }, 1000); 5 | } 6 | 7 | load(); 8 | -------------------------------------------------------------------------------- /test/manual/src/preloaded1.css: -------------------------------------------------------------------------------- 1 | .preloaded-css1 { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/manual/src/preloaded1.js: -------------------------------------------------------------------------------- 1 | /* eslint-env browser */ 2 | /* eslint-disable no-alert */ 3 | 4 | import "./preloaded1.css"; 5 | 6 | alert("Ok"); 7 | -------------------------------------------------------------------------------- /test/manual/src/preloaded2.css: -------------------------------------------------------------------------------- 1 | .preloaded-css2 { 2 | background: red; 3 | } 4 | -------------------------------------------------------------------------------- /test/manual/src/preloaded2.js: -------------------------------------------------------------------------------- 1 | /* eslint-env browser */ 2 | /* eslint-disable no-alert */ 3 | 4 | import "./preloaded2.css"; 5 | 6 | alert("Ok"); 7 | -------------------------------------------------------------------------------- /test/manual/src/simple.css: -------------------------------------------------------------------------------- 1 | .r { 2 | color: red; 3 | } 4 | 5 | .g { 6 | color: green; 7 | } 8 | 9 | .b { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/manual/src/simple.module.css: -------------------------------------------------------------------------------- 1 | .rr { 2 | color: red; 3 | } 4 | 5 | .gg { 6 | color: green; 7 | } 8 | 9 | .bb { 10 | color: blue; 11 | } 12 | -------------------------------------------------------------------------------- /test/manual/src/worker.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: green; 3 | } 4 | -------------------------------------------------------------------------------- /test/manual/src/worker.js: -------------------------------------------------------------------------------- 1 | import "./worker.css"; 2 | 3 | // eslint-disable-next-line no-undef 4 | self.onmessage = (event) => { 5 | console.log(`Received message from application: ${event.data}`); 6 | 7 | // eslint-disable-next-line no-undef 8 | self.postMessage("I'm alive!"); 9 | }; 10 | 11 | async function load() { 12 | return import("./simple.css"); 13 | } 14 | 15 | load(); 16 | -------------------------------------------------------------------------------- /test/normalize-url.test.js: -------------------------------------------------------------------------------- 1 | import normalizeUrl from "../src/hmr/normalize-url"; 2 | 3 | import dataUrls from "./fixtures/json/data-urls.json"; 4 | 5 | describe("normalize-url", () => { 6 | dataUrls.main.forEach((entry) => { 7 | const [url, expected] = entry; 8 | 9 | it(`should work with "${url}" url`, async () => { 10 | const result = normalizeUrl(url); 11 | 12 | expect(result).toBe(expected); 13 | }); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "moduleResolution": "node", 5 | "allowJs": true, 6 | "checkJs": true, 7 | "strict": true, 8 | "types": ["node"], 9 | "resolveJsonModule": true, 10 | "allowSyntheticDefaultImports": true 11 | }, 12 | "include": ["./src/**/*"] 13 | } 14 | -------------------------------------------------------------------------------- /types/hmr/hotModuleReplacement.d.ts: -------------------------------------------------------------------------------- 1 | declare function _exports(moduleId: TODO, options: TODO): TODO; 2 | export = _exports; 3 | export type TODO = any; 4 | -------------------------------------------------------------------------------- /types/hmr/normalize-url.d.ts: -------------------------------------------------------------------------------- 1 | declare function _exports(urlString: string): string; 2 | export = _exports; 3 | --------------------------------------------------------------------------------