Angular-CLI v6: эквивалент опции сборки --no-aot

Недавно я обновился с Angular v5.2.4 в партнерстве с Angular-CLI v1.7.4 до Angular v6.0.3 в партнерстве с Angular-CLI v6.0.8.

Мой проект требует JIT-компилятора из-за использования динамических компонентов. В результате мой сценарий сборки выглядит следующим образом: ng build --prod --no-aot.

Мне нужно продолжать использовать флаг --prod, чтобы сохранить преимущества встряхивания дерева, минификации кода и исключения мертвого кода. Однако по умолчанию --prod включает AOT. Параметр --no-aot раньше был решением для отключения AOT, но все же получил преимущества сборки --prod.

Я пробовал следующие варианты и, как видите, ни одна из сборок не увенчалась успехом (кроме стандартной сборки --prod). Я тоже не получаю никакой информации из интерфейса командной строки, что не очень помогает:

введите описание изображения здесь

Я прочитал официальную документацию по развертыванию Angular, а также Official Angular-CLI build Wiki и не нашли никакой информации, которая могла бы помочь решить эту проблему.

Кто-нибудь знает, какая замена для параметра --no-aot ИЛИ новый способ сделать --prod сборку при отключении AOT?


person Narm    schedule 19.06.2018    source источник
comment
--aot=false --build-optimizer=false должен это сделать   -  person R. Richards    schedule 20.06.2018
comment
Действительно, --aot false уже использовался для этого, --no-aot также не задокументирован для старой версии: github.com/angular/angular-cli/wiki/1-x-build.   -  person jonrsharpe    schedule 20.06.2018
comment
Не тестировалось, но редактирование файла angular.json и замена aot=true на aot=false в проектах / your-project / achitect / build / configurations / production должны сделать это. И вам просто нужно использовать ng build --prod.   -  person JB Nizet    schedule 20.06.2018
comment
Комбинация --aot=false --build-optimizer=false действительно сработала. Однако мне нравится идея отключения AOT в angular.json и удаления дополнительной опции. Я проверю и это прямо сейчас.   -  person Narm    schedule 20.06.2018
comment
Ваше предложение тоже сработало, @JBNizet (частично)! В angular.json я меняю aot=false и "buildOptimizer": false точно так же, как @ R.Richards упомянул в своем комментарии. С этой комбинацией я теперь могу успешно выполнить ng build --prod и получить тот же результат, что и ng build --prod --aot=false --build-optimizer=false.   -  person Narm    schedule 20.06.2018
comment
Спасибо всем за помощь в этом вопросе! Если кто-то из вас захочет дать ответ, я с радостью его приму.   -  person Narm    schedule 20.06.2018


Ответы (2)


Чтобы сделать это из командной строки, используйте следующие параметры вместе с параметром --prod.

--aot=false --build-optimizer=false

Полная команда:

ng b --prod --aot=false --build-optimizer=false

Если вы предпочитаете не делать этого каждый раз в командной строке, вы можете изменить параметры производственной сборки в angular.json.

По следующему пути в файле

projects/your-project/achitect/build/configurations/production

Измените параметры aot и buildOptimizer на false. Затем вы можете просто запустить ng b --prod из командной строки, и вы получите производственную сборку, которая не включает параметры aot и build-optimizer.

Спасибо, Джей Би и Джон!

person R. Richards    schedule 19.06.2018

Вы можете попробовать это:

ng build --prod --aot=false --build-optimizer=false
person Gunjan Kumar    schedule 19.11.2019