/
githubmirror
/
webpack
Обзор
Документация
Войти
/
githubmirror
/
webpack
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
test/configCases/module-classes/dedicated-module-classes/webpack.config.js
45 строк
1 KB
Alexander Akait
refactor: create dedicated module classes per module type (#21164)
10 июн 2026, 20:58
Не верифицирован
10 июн 2026, 20:58
7917dd1
Код
Авторство
О чём код?
"use strict"; const AssetModule = require("../../../../lib/asset/AssetModule"); const JavascriptModule = require("../../../../lib/javascript/JavascriptModule"); const JsonModule = require("../../../../lib/json/JsonModule"); /** @type {Map<string, { new (...args: EXPECTED_ANY[]): EXPECTED_ANY }>} */ const expectedClasses = new Map([ ["javascript/auto", JavascriptModule], ["javascript/dynamic", JavascriptModule], ["javascript/esm", JavascriptModule], ["json", JsonModule], ["asset", AssetModule], ["asset/inline", AssetModule], ["asset/resource", AssetModule], ["asset/source", AssetModule] ]); /** @type {import("../../../../").Configuration} */ module.exports = { module: { rules: [ { test: /\.png$/, type: "asset/resource" }, { test: /\.svg$/, type: "asset/inline" }, { test: /\.txt$/, type: "asset/source" }, { test: /\.md$/, type: "asset" } ] }, plugins: [ (compiler) => { compiler.hooks.compilation.tap("Test", (compilation) => { compilation.hooks.finishModules.tap("Test", (modules) => { for (const module of modules) { const ExpectedClass = expectedClasses.get(module.type); if (ExpectedClass && !(module instanceof ExpectedClass)) { throw new Error( `${module.identifier()} (${module.type}) is not an instance of ${ExpectedClass.name}` ); } } }); }); } ] };