Мне нужно иметь возможность заменить довольно большой модуль в моем приложении Angular на очень простой, чтобы нагрузка на мою сборку рендеринга на стороне сервера (исключая все ненужные требования для компонента, который слишком богат для работы на сервере)так или иначе). Без замены код пытается загрузить window
или document
. Некоторые библиотеки мне удалось просто заменить на null-loader
, но в этом случае мне нужно обрезать все дерево зависимостей, обрезав этот конкретный модуль Angular.
Несмотря на все мои попытки переопределить оригинальный модуль, Angular (@ngtools/webpack
) все же каким-то образом удается генерировать require
вызовы для компонентов, которые я надеялся обрезать ...
Я пытался:
- Использование параметра
hostReplacementPaths
для плагина компилятора
new AngularCompilerPlugin({
tsConfigPath: 'tsconfig.ssr.json',
entryModule: path.join(__dirname, 'src/js/landing/landing.server.module.ts#LandingServerModule'),
hostReplacementPaths: {
[path.resolve('./src/js/app/help.module.ts')]: path.resolve('./src/js/landing/server-mock.module.ts')
}
})
- Использование
NormalModuleReplacementPlugin
new NormalModuleReplacementPlugin(
/help\.module\./,
resource => {
resource.requestresource.request.replace('app/help.module.ts', 'landing/server-mock.module.ts')
},
),
{
test: /help\.module\.ts/,
loader: 'file-replace-loader',
options: {
condition: 'if-replacement-exists',
replacement: path.resolve('./src/js/landing/server-mock.module.ts'),
async: true,
}
},
Я подозреваю, что угловой компилятор сканирует файлы на наличие зависимостей вне веб-пакета ...
Любые идеи, как я могу переопределить один Angularмодуль с фиктивным модулем во время сборки?