From 700052267a3d98e9e21764aac66dfe27ceda7b46 Mon Sep 17 00:00:00 2001 From: Abhishek Date: Sun, 9 Aug 2020 14:15:28 -0400 Subject: [PATCH] test: add webpack5 tests for `dependOn` Adding 2 tests: * `dependOn` - Checks that `dependOn` feature works * `dependOn-multiple-files-per-entry` - Webpack 5 supports specifying multiple files per entry point in combination with the `dependOn` key Motivated by the issue described in https://github.com/webpack-contrib/mini-css-extract-plugin/issues/560 --- .../entryA.js | 1 + .../entryB.js | 1 + .../entryC.js | 1 + .../entryD.js | 1 + .../expected/webpack-5/common.css | 8 + .../expected/webpack-5/common.js | 214 ++++++++++++++++++ .../expected/webpack-5/entry1.css | 8 + .../expected/webpack-5/entry1.js | 40 ++++ .../styleA.css | 3 + .../styleB.css | 3 + .../styleC.css | 3 + .../styleD.css | 3 + .../webpack.config.js | 21 ++ test/cases/dependOn/entryA.js | 1 + test/cases/dependOn/entryB.js | 1 + .../dependOn/expected/webpack-5/common.css | 4 + .../dependOn/expected/webpack-5/common.js | 196 ++++++++++++++++ .../dependOn/expected/webpack-5/entry1.css | 4 + .../dependOn/expected/webpack-5/entry1.js | 21 ++ test/cases/dependOn/styleA.css | 3 + test/cases/dependOn/styleB.css | 3 + test/cases/dependOn/webpack.config.js | 21 ++ 22 files changed, 561 insertions(+) create mode 100644 test/cases/dependOn-multiple-files-per-entry/entryA.js create mode 100644 test/cases/dependOn-multiple-files-per-entry/entryB.js create mode 100644 test/cases/dependOn-multiple-files-per-entry/entryC.js create mode 100644 test/cases/dependOn-multiple-files-per-entry/entryD.js create mode 100644 test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/common.css create mode 100644 test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/common.js create mode 100644 test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/entry1.css create mode 100644 test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/entry1.js create mode 100644 test/cases/dependOn-multiple-files-per-entry/styleA.css create mode 100644 test/cases/dependOn-multiple-files-per-entry/styleB.css create mode 100644 test/cases/dependOn-multiple-files-per-entry/styleC.css create mode 100644 test/cases/dependOn-multiple-files-per-entry/styleD.css create mode 100644 test/cases/dependOn-multiple-files-per-entry/webpack.config.js create mode 100644 test/cases/dependOn/entryA.js create mode 100644 test/cases/dependOn/entryB.js create mode 100644 test/cases/dependOn/expected/webpack-5/common.css create mode 100644 test/cases/dependOn/expected/webpack-5/common.js create mode 100644 test/cases/dependOn/expected/webpack-5/entry1.css create mode 100644 test/cases/dependOn/expected/webpack-5/entry1.js create mode 100644 test/cases/dependOn/styleA.css create mode 100644 test/cases/dependOn/styleB.css create mode 100644 test/cases/dependOn/webpack.config.js diff --git a/test/cases/dependOn-multiple-files-per-entry/entryA.js b/test/cases/dependOn-multiple-files-per-entry/entryA.js new file mode 100644 index 00000000..5579c153 --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/entryA.js @@ -0,0 +1 @@ +import './styleA.css'; diff --git a/test/cases/dependOn-multiple-files-per-entry/entryB.js b/test/cases/dependOn-multiple-files-per-entry/entryB.js new file mode 100644 index 00000000..31e1b1f5 --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/entryB.js @@ -0,0 +1 @@ +import './styleB.css'; diff --git a/test/cases/dependOn-multiple-files-per-entry/entryC.js b/test/cases/dependOn-multiple-files-per-entry/entryC.js new file mode 100644 index 00000000..cb62801c --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/entryC.js @@ -0,0 +1 @@ +import './styleC.css'; diff --git a/test/cases/dependOn-multiple-files-per-entry/entryD.js b/test/cases/dependOn-multiple-files-per-entry/entryD.js new file mode 100644 index 00000000..0db76bbe --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/entryD.js @@ -0,0 +1 @@ +import './styleD.css'; diff --git a/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/common.css b/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/common.css new file mode 100644 index 00000000..7b8c3886 --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/common.css @@ -0,0 +1,8 @@ +.styleC { + background: red; +} + +.styleD { + background: blue; +} + diff --git a/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/common.js b/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/common.js new file mode 100644 index 00000000..e1f414e6 --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/common.js @@ -0,0 +1,214 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ([ +/* 0 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _styleC_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1); +/* harmony import */ var _styleC_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_styleC_css__WEBPACK_IMPORTED_MODULE_0__); + + + +/***/ }), +/* 1 */ +/***/ (() => { + +// extracted by mini-css-extract-plugin + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _styleD_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3); +/* harmony import */ var _styleD_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_styleD_css__WEBPACK_IMPORTED_MODULE_0__); + + + +/***/ }), +/* 3 */ +/***/ (() => { + +// extracted by mini-css-extract-plugin + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = __webpack_modules__; +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => module['default'] : +/******/ () => module; +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/compat */ +/******/ +/******/ +/******/ // object to store loaded CSS chunks +/******/ var installedCssChunks = { +/******/ 0: 0 +/******/ };/* webpack/runtime/jsonp chunk loading */ +/******/ (() => { +/******/ // object to store loaded and loading chunks +/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched +/******/ // Promise = chunk loading, 0 = chunk loaded +/******/ var installedChunks = { +/******/ 0: 0 +/******/ }; +/******/ +/******/ var deferredModules = [ +/******/ [0], +/******/ [2] +/******/ ]; +/******/ // no chunk on demand loading +/******/ +/******/ // no prefetching +/******/ +/******/ // no preloaded +/******/ +/******/ // no HMR +/******/ +/******/ // no HMR manifest +/******/ +/******/ var checkDeferredModules = () => { +/******/ +/******/ }; +/******/ function checkDeferredModulesImpl() { +/******/ var result; +/******/ for(var i = 0; i < deferredModules.length; i++) { +/******/ var deferredModule = deferredModules[i]; +/******/ var fulfilled = true; +/******/ for(var j = 1; j < deferredModule.length; j++) { +/******/ var depId = deferredModule[j]; +/******/ if(installedChunks[depId] !== 0) fulfilled = false; +/******/ } +/******/ if(fulfilled) { +/******/ deferredModules.splice(i--, 1); +/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]); +/******/ } +/******/ } +/******/ if(deferredModules.length === 0) { +/******/ __webpack_require__.x(); +/******/ __webpack_require__.x = () => { +/******/ +/******/ } +/******/ } +/******/ return result; +/******/ } +/******/ __webpack_require__.x = () => { +/******/ // reset startup function so it can be called again when more startup code is added +/******/ __webpack_require__.x = () => { +/******/ +/******/ } +/******/ jsonpArray = jsonpArray.slice(); +/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); +/******/ return (checkDeferredModules = checkDeferredModulesImpl)(); +/******/ }; +/******/ +/******/ // install a JSONP callback for chunk loading +/******/ function webpackJsonpCallback(data) { +/******/ var chunkIds = data[0]; +/******/ var moreModules = data[1]; +/******/ var executeModules = data[2]; +/******/ var runtime = data[3]; +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0, resolves = []; +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { +/******/ resolves.push(installedChunks[chunkId][0]); +/******/ } +/******/ installedChunks[chunkId] = 0; +/******/ } +/******/ for(moduleId in moreModules) { +/******/ if(__webpack_require__.o(moreModules, moduleId)) { +/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(runtime) runtime(__webpack_require__); +/******/ if(parentJsonpFunction) parentJsonpFunction(data); +/******/ while(resolves.length) { +/******/ resolves.shift()(); +/******/ } +/******/ +/******/ // add entry modules from loaded chunk to deferred list +/******/ if(executeModules) deferredModules.push.apply(deferredModules, executeModules); +/******/ +/******/ // run deferred modules when all chunks ready +/******/ return checkDeferredModules(); +/******/ }; +/******/ +/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; +/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); +/******/ jsonpArray.push = webpackJsonpCallback; +/******/ var parentJsonpFunction = oldJsonpFunction; +/******/ })(); +/******/ +/************************************************************************/ +/******/ // run startup +/******/ return __webpack_require__.x(); +/******/ })() +; \ No newline at end of file diff --git a/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/entry1.css b/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/entry1.css new file mode 100644 index 00000000..bd9b41d3 --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/entry1.css @@ -0,0 +1,8 @@ +.styleB { + background: blue; +} + +.styleA { + background: red; +} + diff --git a/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/entry1.js b/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/entry1.js new file mode 100644 index 00000000..4b6d8528 --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/expected/webpack-5/entry1.js @@ -0,0 +1,40 @@ +(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[1],[ +/* 0 */, +/* 1 */, +/* 2 */, +/* 3 */, +/* 4 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _styleB_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); +/* harmony import */ var _styleB_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_styleB_css__WEBPACK_IMPORTED_MODULE_0__); + + + +/***/ }), +/* 5 */ +/***/ (() => { + +// extracted by mini-css-extract-plugin + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _styleA_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7); +/* harmony import */ var _styleA_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_styleA_css__WEBPACK_IMPORTED_MODULE_0__); + + + +/***/ }), +/* 7 */ +/***/ (() => { + +// extracted by mini-css-extract-plugin + +/***/ }) +],[[6,0],[4,0]]]); \ No newline at end of file diff --git a/test/cases/dependOn-multiple-files-per-entry/styleA.css b/test/cases/dependOn-multiple-files-per-entry/styleA.css new file mode 100644 index 00000000..ab12e311 --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/styleA.css @@ -0,0 +1,3 @@ +.styleA { + background: red; +} diff --git a/test/cases/dependOn-multiple-files-per-entry/styleB.css b/test/cases/dependOn-multiple-files-per-entry/styleB.css new file mode 100644 index 00000000..857b0908 --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/styleB.css @@ -0,0 +1,3 @@ +.styleB { + background: blue; +} diff --git a/test/cases/dependOn-multiple-files-per-entry/styleC.css b/test/cases/dependOn-multiple-files-per-entry/styleC.css new file mode 100644 index 00000000..0cbc5c9e --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/styleC.css @@ -0,0 +1,3 @@ +.styleC { + background: red; +} diff --git a/test/cases/dependOn-multiple-files-per-entry/styleD.css b/test/cases/dependOn-multiple-files-per-entry/styleD.css new file mode 100644 index 00000000..61aedcc0 --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/styleD.css @@ -0,0 +1,3 @@ +.styleD { + background: blue; +} diff --git a/test/cases/dependOn-multiple-files-per-entry/webpack.config.js b/test/cases/dependOn-multiple-files-per-entry/webpack.config.js new file mode 100644 index 00000000..dd0dcb49 --- /dev/null +++ b/test/cases/dependOn-multiple-files-per-entry/webpack.config.js @@ -0,0 +1,21 @@ +import Self from '../../../src'; + +module.exports = { + entry: { + entry1: { import: ['./entryA.js', './entryB.js'], dependOn: 'common' }, + common: ['./entryC.js', './entryD.js'], + }, + module: { + rules: [ + { + test: /\.css$/, + use: [Self.loader, 'css-loader'], + }, + ], + }, + plugins: [ + new Self({ + filename: '[name].css', + }), + ], +}; diff --git a/test/cases/dependOn/entryA.js b/test/cases/dependOn/entryA.js new file mode 100644 index 00000000..5579c153 --- /dev/null +++ b/test/cases/dependOn/entryA.js @@ -0,0 +1 @@ +import './styleA.css'; diff --git a/test/cases/dependOn/entryB.js b/test/cases/dependOn/entryB.js new file mode 100644 index 00000000..31e1b1f5 --- /dev/null +++ b/test/cases/dependOn/entryB.js @@ -0,0 +1 @@ +import './styleB.css'; diff --git a/test/cases/dependOn/expected/webpack-5/common.css b/test/cases/dependOn/expected/webpack-5/common.css new file mode 100644 index 00000000..bbb56596 --- /dev/null +++ b/test/cases/dependOn/expected/webpack-5/common.css @@ -0,0 +1,4 @@ +.styleB { + background: blue; +} + diff --git a/test/cases/dependOn/expected/webpack-5/common.js b/test/cases/dependOn/expected/webpack-5/common.js new file mode 100644 index 00000000..c5be0f05 --- /dev/null +++ b/test/cases/dependOn/expected/webpack-5/common.js @@ -0,0 +1,196 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ([ +/* 0 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _styleB_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1); +/* harmony import */ var _styleB_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_styleB_css__WEBPACK_IMPORTED_MODULE_0__); + + + +/***/ }), +/* 1 */ +/***/ (() => { + +// extracted by mini-css-extract-plugin + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = __webpack_modules__; +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => module['default'] : +/******/ () => module; +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/compat */ +/******/ +/******/ +/******/ // object to store loaded CSS chunks +/******/ var installedCssChunks = { +/******/ 0: 0 +/******/ };/* webpack/runtime/jsonp chunk loading */ +/******/ (() => { +/******/ // object to store loaded and loading chunks +/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched +/******/ // Promise = chunk loading, 0 = chunk loaded +/******/ var installedChunks = { +/******/ 0: 0 +/******/ }; +/******/ +/******/ var deferredModules = [ +/******/ [0] +/******/ ]; +/******/ // no chunk on demand loading +/******/ +/******/ // no prefetching +/******/ +/******/ // no preloaded +/******/ +/******/ // no HMR +/******/ +/******/ // no HMR manifest +/******/ +/******/ var checkDeferredModules = () => { +/******/ +/******/ }; +/******/ function checkDeferredModulesImpl() { +/******/ var result; +/******/ for(var i = 0; i < deferredModules.length; i++) { +/******/ var deferredModule = deferredModules[i]; +/******/ var fulfilled = true; +/******/ for(var j = 1; j < deferredModule.length; j++) { +/******/ var depId = deferredModule[j]; +/******/ if(installedChunks[depId] !== 0) fulfilled = false; +/******/ } +/******/ if(fulfilled) { +/******/ deferredModules.splice(i--, 1); +/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]); +/******/ } +/******/ } +/******/ if(deferredModules.length === 0) { +/******/ __webpack_require__.x(); +/******/ __webpack_require__.x = () => { +/******/ +/******/ } +/******/ } +/******/ return result; +/******/ } +/******/ __webpack_require__.x = () => { +/******/ // reset startup function so it can be called again when more startup code is added +/******/ __webpack_require__.x = () => { +/******/ +/******/ } +/******/ jsonpArray = jsonpArray.slice(); +/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); +/******/ return (checkDeferredModules = checkDeferredModulesImpl)(); +/******/ }; +/******/ +/******/ // install a JSONP callback for chunk loading +/******/ function webpackJsonpCallback(data) { +/******/ var chunkIds = data[0]; +/******/ var moreModules = data[1]; +/******/ var executeModules = data[2]; +/******/ var runtime = data[3]; +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0, resolves = []; +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { +/******/ resolves.push(installedChunks[chunkId][0]); +/******/ } +/******/ installedChunks[chunkId] = 0; +/******/ } +/******/ for(moduleId in moreModules) { +/******/ if(__webpack_require__.o(moreModules, moduleId)) { +/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(runtime) runtime(__webpack_require__); +/******/ if(parentJsonpFunction) parentJsonpFunction(data); +/******/ while(resolves.length) { +/******/ resolves.shift()(); +/******/ } +/******/ +/******/ // add entry modules from loaded chunk to deferred list +/******/ if(executeModules) deferredModules.push.apply(deferredModules, executeModules); +/******/ +/******/ // run deferred modules when all chunks ready +/******/ return checkDeferredModules(); +/******/ }; +/******/ +/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; +/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); +/******/ jsonpArray.push = webpackJsonpCallback; +/******/ var parentJsonpFunction = oldJsonpFunction; +/******/ })(); +/******/ +/************************************************************************/ +/******/ // run startup +/******/ return __webpack_require__.x(); +/******/ })() +; \ No newline at end of file diff --git a/test/cases/dependOn/expected/webpack-5/entry1.css b/test/cases/dependOn/expected/webpack-5/entry1.css new file mode 100644 index 00000000..95d70a8e --- /dev/null +++ b/test/cases/dependOn/expected/webpack-5/entry1.css @@ -0,0 +1,4 @@ +.styleA { + background: red; +} + diff --git a/test/cases/dependOn/expected/webpack-5/entry1.js b/test/cases/dependOn/expected/webpack-5/entry1.js new file mode 100644 index 00000000..adec0834 --- /dev/null +++ b/test/cases/dependOn/expected/webpack-5/entry1.js @@ -0,0 +1,21 @@ +(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[1],[ +/* 0 */, +/* 1 */, +/* 2 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _styleA_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3); +/* harmony import */ var _styleA_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_styleA_css__WEBPACK_IMPORTED_MODULE_0__); + + + +/***/ }), +/* 3 */ +/***/ (() => { + +// extracted by mini-css-extract-plugin + +/***/ }) +],[[2,0]]]); \ No newline at end of file diff --git a/test/cases/dependOn/styleA.css b/test/cases/dependOn/styleA.css new file mode 100644 index 00000000..ab12e311 --- /dev/null +++ b/test/cases/dependOn/styleA.css @@ -0,0 +1,3 @@ +.styleA { + background: red; +} diff --git a/test/cases/dependOn/styleB.css b/test/cases/dependOn/styleB.css new file mode 100644 index 00000000..857b0908 --- /dev/null +++ b/test/cases/dependOn/styleB.css @@ -0,0 +1,3 @@ +.styleB { + background: blue; +} diff --git a/test/cases/dependOn/webpack.config.js b/test/cases/dependOn/webpack.config.js new file mode 100644 index 00000000..e839a8f1 --- /dev/null +++ b/test/cases/dependOn/webpack.config.js @@ -0,0 +1,21 @@ +import Self from '../../../src'; + +module.exports = { + entry: { + entry1: { import: './entryA.js', dependOn: 'common' }, + common: './entryB.js', + }, + module: { + rules: [ + { + test: /\.css$/, + use: [Self.loader, 'css-loader'], + }, + ], + }, + plugins: [ + new Self({ + filename: '[name].css', + }), + ], +};