Комментарии 22
Мы вот до сих пор на 4.4 сидим и вроде всё устраивает…
ng update, который вас практически избавит от ручного обновления пакетов
RxJS 6.0 и улучшенный tree-shaking
Анимации без полифоллов
Компоненты без ангуляра (например, чтоб шерить их между основным сайтом и лендингом на WP)
это как минимум
Компоненты без ангуляра (например, чтоб шерить их между основным сайтом и лендингом на WP)
А можно об этом поподробнее? Или ссылку скиньте, плз.
Я говорю об Angular Elements, angular.io/guide/elements.
Оно ещё очень сырое, но нас подходит, мы начнем готовить некоторые элементы как раз под описанный выше случай.
Более-менее production-ready это всё будет уже к 7 релизу.
1. Хотелось ускорить сборку проекта. Уже давно следим за новостями по Webpack 4. В этом видео Sean Larkin рассказывает подробнее. Angular 6 по-умолчанию использует Webpack 4 поэтому решили обновлять совместно. В итоге сейчас проект стал собираться на 40 секунд быстрее (думаю можно будет еще ускорить, но уже приятно).
2. С каждым обновлением команда Angular вносит ряд изменений в фреймворк, которые требуют переработки компонентов. Если затягивать с обновлением, то потом придется менять слишком много кода. Даже в update.angular.io если указать переход через несколько мажорных версии они напишут предупреждение:
Warning: We do not recommend moving across multiple major versions.
Angular 6 по-умолчанию использует Webpack 4
Angular CLI, самому Angular Webpack без надобности.
Если не используете какие-то специфичные фичи angular-cli, то может быть выгоднее самим написать сборку, а вместо uglify (которым и жмет вебпак) можно использовать google closure compiler, многопоточный, на джаве.
"@angular/common": «4.4.6»,
"@angular/compiler": «4.4.6»,
"@angular/core": «4.4.6»,
"@angular/forms": «4.4.6»,
"@angular/http": «4.4.6»,
"@angular/platform-browser": «4.4.6»,
"@angular/platform-browser-dynamic": «4.4.6»,
"@angular/animations": «4.4.6»,
"@angular/router": «4.4.6»,
"@angular/compiler-cli": «4.4.6»,
«angular-in-memory-web-api»: «0.5.1»,
«bootstrap»: «3.3.7»,
«core-js»: «2.5.1»,
«eonasdan-bootstrap-datetimepicker»: «4.17.47»,
«font-awesome»: «4.7.0»,
«ie-shim»: «0.1.0»,
«moment»: «2.15.1»,
«reflect-metadata»: "^0.1.10",
«rxjs»: «5.5.2»,
«zone.js»: «0.8.18»,
«aspnet-prerendering»: «2.0.3»,
«aspnet-webpack»: «2.0.1»,
«file-saver»: «1.3.3»,
«d3»: «4.7.4»
},
Очень интересно, как у вас работал старый конфиг вебпака вот с этой строкой
transpileOnly: !process.env.NODE_ENV === 'production'
Порядок операций такой, что это эквивалентно: false === 'production'
, то есть всегда false.
Радует, что в финальной версии конфига этой строки уже нет :)
Это в ходе экспериментов так выключал/включал дополнительные проверки в попытках ускорить сборку, а обратно для статьи поменять забыл.
А вот новый SplitChunksPlugin пришлось осознавать довольно долго.
Спасибо за пост. Сам хотел нечто подобное описать, т.к. был очень схожий болезненный опыт перехода, но на 5ую версию. Проект также работал без CLI и был довольно увесистый.
Мы решили, что наиболее правильным решением будет перейти на CLI, и несмотря на огромное количество убитого времени (неделя боли и страданий) проект стал работать через CLI и даже с AOT компиляцией. Правда это стало последним каплей и следующие проекты мы делали уже на другом фреймворке...
Обновляем Angular до 6-ой версии в проекте без использования CLI