Webpack: создать виртуальный модуль внутри плагина
Я пишу плагин и загрузчик веб-пакетов, и я хотел бы создать "динамический" модуль, который генерируется через мой плагин.
По сути, я хочу, чтобы мой загрузчик генерировал импорт в динамический модуль, например так:
module.exports = function (content) {
return `
const dynamicModule = require('./the-dynamic-module')
// module.exports = ...
`;
}
Плагин должен генерировать "./the-dynamic-module"
и, в идеале, загрузчик следует перестраивать каждый раз, когда меняется динамический модуль.
Есть ли способ добиться этого?
Есть плагин, который генерирует виртуальные модули, но они статичны. Я хотел бы создать динамический, во время компиляции.
Любая помощь приветствуется! Приветствия.
1 ответ
Вы можете использовать плагин ниже для генерации виртуальных модулей во время компиляции (я являюсь автором этого плагина): https://github.com/sysgears/webpack-virtual-modules
var webpack = require("webpack");
var VirtualModulesPlugin = require("webpack-virtual-modules");
var virtualModules = new VirtualModulesPlugin();
var compiler = webpack({
// ...
plugins: [
virtualModules
]
});
compiler.watch();
Позже в другом коде, возможно, в вашем плагине Webpack, который вы называете:
virtualModules.writeModule('./the-dynamic-module.js',
'module.exports = ...the contents of dynamic module...');
Каждый раз, когда вы пишете динамический модуль через virtualModules.writeModule
это будет иметь тот же эффект, как если бы это был реальный файл в файловой системе, которая была изменена - Webpack перезапустит компиляцию и запустит загрузчики, сконфигурированные для обработки этого типа файлов.