webpack AngularCompilerPlugin опция hostReplacementPaths не работает
После того, как я обновил до Angular6 и обновил @ngtools/webpack
с "6.0.0-beta.8" до "6.1.2" я обнаружил, что опция hostReplacementPaths больше не работает.
Обычно он заменяет правильные файлы env:
new AngularCompilerPlugin({
...
hostReplacementPaths: {
'environments/environment.ts': environmentFiles[NODE_ENV]
},
...
})
Но сейчас это не так.
Я сделал глубокую отладку в @ngtools/webpack и обнаружил, что normalize
функция здесь https://github.com/angular/angular-cli/blob/master/packages/ngtools/webpack/src/virtual_file_system_decorator.ts#L188 не работает
все еще не мог найти, что пошло не так с этим. может кто-нибудь уже решил эту проблему?
Создана проблема в репо angular-cli - https://github.com/angular/angular-cli/issues/11801
2 ответа
Как уже упоминалось в вашей проблеме, это известная ошибка с версией 6.1.0-rc.2
и пока патч не будет выпущен, вы должны вернуться к 6.1.0-rc.1
,
Похоже, скоро это будет исправлено этим PR - https://github.com/angular/angular-cli/pull/11809
Как упоминал Джеймс, была введена ошибка в 6.1.0-rc.2
этим коммитом: https://github.com/angular/angular-cli/commit/86a62adbe8faeb4628296d5d6915c54e6dbfd85b
Пути не были решены правильно.
До:
const normalizedFrom = normalize(from);
const normalizedWith = normalize(this._options.hostReplacementPaths[from]);
Предлагаемое исправление:
const normalizedFrom = resolve(normalize(this._basePath), normalize(from));
const normalizedWith = resolve(
normalize(this._basePath),
normalize(this._options.hostReplacementPaths[from]),
);