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 не работает

это https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/core/src/virtual-fs/path.ts#L199

все еще не мог найти, что пошло не так с этим. может кто-нибудь уже решил эту проблему?

Создана проблема в репо 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]),
);
Другие вопросы по тегам