diff --git a/src/index.js b/src/index.js index 9a1b17de..24573504 100644 --- a/src/index.js +++ b/src/index.js @@ -821,8 +821,7 @@ class MiniCssExtractPlugin { return referencedChunk.canBeInitial() ? this.options.filename : this.options.chunkFilename; - }, - true + } ) ); diff --git a/test/TestCases.test.js b/test/TestCases.test.js index 5e13f10f..2374a9c2 100644 --- a/test/TestCases.test.js +++ b/test/TestCases.test.js @@ -114,7 +114,7 @@ describe("TestCases", () => { Object.assign( config, { - mode: "none", + mode: config.mode || "none", context: directoryForCase, }, config, diff --git a/test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/0.b39c6cd65ee4f78b425e.css b/test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/0.28af1b92f2511f8f1836.css similarity index 100% rename from test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/0.b39c6cd65ee4f78b425e.css rename to test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/0.28af1b92f2511f8f1836.css diff --git a/test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/b39c6cd65ee4f78b425e.css b/test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/28af1b92f2511f8f1836.css similarity index 100% rename from test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/b39c6cd65ee4f78b425e.css rename to test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/28af1b92f2511f8f1836.css diff --git a/test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/main.js b/test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/main.js index 8d3281d3..6ac47305 100644 --- a/test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/main.js +++ b/test/cases/chunkFilename-fullhash/expected/webpack-5-importModule/main.js @@ -64,10 +64,8 @@ __webpack_require__.r(__webpack_exports__); /******/ /******/ /* webpack/runtime/get mini-css chunk filename */ /******/ (() => { -/******/ // This function allow to reference all chunks +/******/ // This function allow to reference async chunks /******/ __webpack_require__.miniCssF = (chunkId) => { -/******/ // return url for filenames not based on template -/******/ if (chunkId === 1) return "" + __webpack_require__.h() + ".css"; /******/ // return url for filenames based on template /******/ return "" + chunkId + "." + __webpack_require__.h() + ".css"; /******/ }; @@ -75,7 +73,7 @@ __webpack_require__.r(__webpack_exports__); /******/ /******/ /* webpack/runtime/getFullHash */ /******/ (() => { -/******/ __webpack_require__.h = () => ("b39c6cd65ee4f78b425e") +/******/ __webpack_require__.h = () => ("28af1b92f2511f8f1836") /******/ })(); /******/ /******/ /* webpack/runtime/global */ diff --git a/test/cases/chunkFilename-fullhash/expected/webpack-5/0.4119f46f7fa72336b928.css b/test/cases/chunkFilename-fullhash/expected/webpack-5/0.845a2495b51038b0d047.css similarity index 100% rename from test/cases/chunkFilename-fullhash/expected/webpack-5/0.4119f46f7fa72336b928.css rename to test/cases/chunkFilename-fullhash/expected/webpack-5/0.845a2495b51038b0d047.css diff --git a/test/cases/chunkFilename-fullhash/expected/webpack-5/4119f46f7fa72336b928.css b/test/cases/chunkFilename-fullhash/expected/webpack-5/845a2495b51038b0d047.css similarity index 100% rename from test/cases/chunkFilename-fullhash/expected/webpack-5/4119f46f7fa72336b928.css rename to test/cases/chunkFilename-fullhash/expected/webpack-5/845a2495b51038b0d047.css diff --git a/test/cases/chunkFilename-fullhash/expected/webpack-5/main.js b/test/cases/chunkFilename-fullhash/expected/webpack-5/main.js index 9c87a9f7..84394021 100644 --- a/test/cases/chunkFilename-fullhash/expected/webpack-5/main.js +++ b/test/cases/chunkFilename-fullhash/expected/webpack-5/main.js @@ -64,10 +64,8 @@ __webpack_require__.r(__webpack_exports__); /******/ /******/ /* webpack/runtime/get mini-css chunk filename */ /******/ (() => { -/******/ // This function allow to reference all chunks +/******/ // This function allow to reference async chunks /******/ __webpack_require__.miniCssF = (chunkId) => { -/******/ // return url for filenames not based on template -/******/ if (chunkId === 1) return "" + __webpack_require__.h() + ".css"; /******/ // return url for filenames based on template /******/ return "" + chunkId + "." + __webpack_require__.h() + ".css"; /******/ }; @@ -75,7 +73,7 @@ __webpack_require__.r(__webpack_exports__); /******/ /******/ /* webpack/runtime/getFullHash */ /******/ (() => { -/******/ __webpack_require__.h = () => ("4119f46f7fa72336b928") +/******/ __webpack_require__.h = () => ("845a2495b51038b0d047") /******/ })(); /******/ /******/ /* webpack/runtime/global */ diff --git a/test/cases/contenthash-1/expected/main.8c5b220bf6f482881a90.css b/test/cases/contenthash-1/expected/main.8c5b220bf6f482881a90.css new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/test/cases/contenthash-1/expected/main.8c5b220bf6f482881a90.css @@ -0,0 +1 @@ + diff --git a/test/cases/contenthash-1/index.js b/test/cases/contenthash-1/index.js new file mode 100644 index 00000000..95594dc5 --- /dev/null +++ b/test/cases/contenthash-1/index.js @@ -0,0 +1,3 @@ +/* eslint-disable */ +async () => await import("./lib.js"); +import "./style.css"; diff --git a/test/cases/contenthash-1/lib.js b/test/cases/contenthash-1/lib.js new file mode 100644 index 00000000..e69de29b diff --git a/test/cases/contenthash-1/style.css b/test/cases/contenthash-1/style.css new file mode 100644 index 00000000..e69de29b diff --git a/test/cases/contenthash-1/webpack.config.js b/test/cases/contenthash-1/webpack.config.js new file mode 100644 index 00000000..5b1b9ce4 --- /dev/null +++ b/test/cases/contenthash-1/webpack.config.js @@ -0,0 +1,25 @@ +import Self from "../../../src"; + +module.exports = { + entry: "./index.js", + mode: "production", + cache: { + type: "filesystem", + }, + module: { + rules: [ + { + test: /\.css$/, + use: [Self.loader, "css-loader"], + }, + ], + }, + output: { + filename: "[name].[contenthash].js", + }, + plugins: [ + new Self({ + filename: "[name].[contenthash].css", + }), + ], +}; diff --git a/test/cases/hmr/expected/main.css b/test/cases/hmr/expected/main.css index 6f77cc07..729f48f8 100644 --- a/test/cases/hmr/expected/main.css +++ b/test/cases/hmr/expected/main.css @@ -1,9 +1,21 @@ +/*!****************************************************************!*\ + !*** css ../../../node_modules/css-loader/dist/cjs.js!./c.css ***! + \****************************************************************/ @import url(https://some/other/external/css); +/*!****************************************************************!*\ + !*** css ../../../node_modules/css-loader/dist/cjs.js!./b.css ***! + \****************************************************************/ @import url(https://some/external/css); +/*!****************************************************************!*\ + !*** css ../../../node_modules/css-loader/dist/cjs.js!./a.css ***! + \****************************************************************/ body { background: red; } +/*!********************************************************************!*\ + !*** css ../../../node_modules/css-loader/dist/cjs.js!./c.css (1) ***! + \********************************************************************/ .c { background: red; } @@ -12,6 +24,9 @@ body { color: yellow; } +/*!********************************************************************!*\ + !*** css ../../../node_modules/css-loader/dist/cjs.js!./b.css (1) ***! + \********************************************************************/ .b { background: red; } @@ -20,5 +35,8 @@ body { color: yellow; } +/*!********************************************************************!*\ + !*** css ../../../node_modules/css-loader/dist/cjs.js!./index.css ***! + \********************************************************************/ diff --git a/test/cases/hmr/expected/main.js b/test/cases/hmr/expected/main.js index 31721465..9b64a55d 100644 --- a/test/cases/hmr/expected/main.js +++ b/test/cases/hmr/expected/main.js @@ -1,22 +1,10 @@ /******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ([ -/* 0 */ -/***/ ((module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - if(true) { - // - var cssReload = __webpack_require__(1)(module.id, {"locals":false}); - module.hot.dispose(cssReload); - module.hot.accept(undefined, cssReload); - } - +/******/ var __webpack_modules__ = ({ -/***/ }), -/* 1 */ +/***/ "../../../src/hmr/hotModuleReplacement.js": +/*!************************************************!*\ + !*** ../../../src/hmr/hotModuleReplacement.js ***! + \************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* eslint-env browser */ @@ -26,7 +14,7 @@ __webpack_require__.r(__webpack_exports__); func-names */ -const normalizeUrl = __webpack_require__(2); +const normalizeUrl = __webpack_require__(/*! ./normalize-url */ "../../../src/hmr/normalize-url.js"); const srcByModuleId = Object.create(null); @@ -262,7 +250,11 @@ module.exports = function (moduleId, options) { /***/ }), -/* 2 */ + +/***/ "../../../src/hmr/normalize-url.js": +/*!*****************************************!*\ + !*** ../../../src/hmr/normalize-url.js ***! + \*****************************************/ /***/ ((module) => { /* eslint-disable */ @@ -305,8 +297,29 @@ module.exports = function (urlString) { }; +/***/ }), + +/***/ "./index.css": +/*!*******************!*\ + !*** ./index.css ***! + \*******************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + if(true) { + // + var cssReload = __webpack_require__(/*! ../../../src/hmr/hotModuleReplacement.js */ "../../../src/hmr/hotModuleReplacement.js")(module.id, {"locals":false}); + module.hot.dispose(cssReload); + module.hot.accept(undefined, cssReload); + } + + /***/ }) -/******/ ]); + +/******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; @@ -362,10 +375,10 @@ module.exports = function (urlString) { /******/ /******/ /* webpack/runtime/get mini-css chunk filename */ /******/ (() => { -/******/ // This function allow to reference all chunks +/******/ // This function allow to reference async chunks /******/ __webpack_require__.miniCssF = (chunkId) => { /******/ // return url for filenames based on template -/******/ return "" + "main" + ".css"; +/******/ return undefined; /******/ }; /******/ })(); /******/ @@ -947,7 +960,7 @@ module.exports = function (urlString) { /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched /******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded /******/ var installedChunks = __webpack_require__.hmrS_jsonp = __webpack_require__.hmrS_jsonp || { -/******/ 0: 0 +/******/ "main": 0 /******/ }; /******/ /******/ // no chunk on demand loading @@ -1457,7 +1470,7 @@ module.exports = function (urlString) { /******/ // module cache are used so entry inlining is disabled /******/ // startup /******/ // Load entry module and return exports -/******/ var __webpack_exports__ = __webpack_require__(0); +/******/ var __webpack_exports__ = __webpack_require__("./index.css"); /******/ /******/ })() ; \ No newline at end of file diff --git a/test/cases/hmr/webpack.config.js b/test/cases/hmr/webpack.config.js index fbbe0159..6b0e2569 100644 --- a/test/cases/hmr/webpack.config.js +++ b/test/cases/hmr/webpack.config.js @@ -5,6 +5,7 @@ import Self from "../../../src"; module.exports = { entry: "./index.css", mode: "development", + devtool: false, module: { rules: [ { diff --git a/test/cases/insert-function/expected/main.js b/test/cases/insert-function/expected/main.js index b47b5465..aed43764 100644 --- a/test/cases/insert-function/expected/main.js +++ b/test/cases/insert-function/expected/main.js @@ -53,7 +53,7 @@ /******/ /******/ /* webpack/runtime/get mini-css chunk filename */ /******/ (() => { -/******/ // This function allow to reference all chunks +/******/ // This function allow to reference async chunks /******/ __webpack_require__.miniCssF = (chunkId) => { /******/ // return url for filenames based on template /******/ return "" + chunkId + ".css"; diff --git a/test/cases/insert-string/expected/main.js b/test/cases/insert-string/expected/main.js index bcd051c5..8251e336 100644 --- a/test/cases/insert-string/expected/main.js +++ b/test/cases/insert-string/expected/main.js @@ -53,7 +53,7 @@ /******/ /******/ /* webpack/runtime/get mini-css chunk filename */ /******/ (() => { -/******/ // This function allow to reference all chunks +/******/ // This function allow to reference async chunks /******/ __webpack_require__.miniCssF = (chunkId) => { /******/ // return url for filenames based on template /******/ return "" + chunkId + ".css"; diff --git a/test/cases/insert-undefined/expected/main.js b/test/cases/insert-undefined/expected/main.js index 04dc7411..78577d39 100644 --- a/test/cases/insert-undefined/expected/main.js +++ b/test/cases/insert-undefined/expected/main.js @@ -53,7 +53,7 @@ /******/ /******/ /* webpack/runtime/get mini-css chunk filename */ /******/ (() => { -/******/ // This function allow to reference all chunks +/******/ // This function allow to reference async chunks /******/ __webpack_require__.miniCssF = (chunkId) => { /******/ // return url for filenames based on template /******/ return "" + chunkId + ".css"; diff --git a/test/cases/runtime/expected/runtime~main.js b/test/cases/runtime/expected/runtime~main.js index 0f260b11..fda12e3f 100644 --- a/test/cases/runtime/expected/runtime~main.js +++ b/test/cases/runtime/expected/runtime~main.js @@ -128,10 +128,10 @@ /******/ /******/ /* webpack/runtime/get mini-css chunk filename */ /******/ (() => { -/******/ // This function allow to reference all chunks +/******/ // This function allow to reference async chunks /******/ __webpack_require__.miniCssF = (chunkId) => { /******/ // return url for filenames based on template -/******/ return "" + "main" + "." + "a45a4571ab5cece12cf0" + ".css"; +/******/ return undefined; /******/ }; /******/ })(); /******/