Angular CLI мощный инструмент для тестирования и создания приложений


Содержание материала:

Ваше первое Angular2 приложение с помощью CLI

Что вы сделаете?

Простейшее приложнеие с помощью Angular CLI.

Что вам понадобится?

  • Около 15-50 минут
  • Ваш любимый текстовый редактор
  • NodeJS
  • NPM(Node Package Manager)

Как пользоваться этой статьей

  • Внимательно прочитайте статью
  • Выполните все инструкции
  • Проверьте что приложение работает
  • Попробуйте создать отдельное приложение сами без инструкций
  • Если что то осталось неясно, смело задавайте вопросы мне или google

Установите Node Package Manager

Он нам понадобиться, чтобы установить Angular CLI. Это добавления в интерфейс командной строки или попросту консоль которые позволят вам быстро создать рабочую заготовку для вашего нового Angular2 проекта тем самым экономя ваше время.

Перейдите на сайт nodejs.org и скачайте последнюю версию NodeJS. Установив NodeJS вы также получите и NPM(NodePackageManger). Это именно то, что нам нужно для установки Angular CLI.

Установите Angular CLI

  • Выполните следующую команду:

npm install -g angular-cli@latest

Пользователям Windows рекомендуется запускать консоль из под администратора!

Создание и запуск проекта

  • Выполните следующий набор команд:

ng new first-app ng serve

  • ng new — создаст заготовку вашего приложения, причем вполне рабочую и готовую к запуску
  • ng serve — запустит локальный web-сервер

Вам осталось лишь открыть браузер и ввести следующую строку http://localhost:4200/

Давайте попробуем поменять сообщение

Зайдите в каталог first-app/src/app/app.components.ts и поменяйте значение переменной title

ng serve автоматически “увидит” изменения в файле и пересоберет проект. Посмотрите изменения в браузере:

Структура проекта

Давайте кратко опишем ключевые файлы в нашем созданном проекте, чтобы вы имели общее представление:

Создаем Electron приложение с помощью Angular CLI

Это builder для Angular CLI, который позволяет настроить связь с окружающей средой Electron, предоставляя вам доступ ко всем функциям, доступным для Electron, таким как доступ к файловой системе, которые в настоящее время не поддерживаются в Angular CLI.

Например, вы можете импортировать, модуль:

Важно отметить, что это не схема или что-то, что поможет поднять Electron приложение для вас. Это просто расширение для Angular CLI, позволяющее вашему Angular приложению иметь полный доступ к функциям Electron без каких-либо неловких обходных решений, таких как передача сообщений.

Как запустить builder


Процесс настройки невероятно прост. Сначала установите пакет:

Автоматизация тестирования c использованием Angular cli (angular 4)?

Как автоматизировать unit тестирование для деплоя под angular?
Использую Angular Cli. karma и jasmine предустановлены в него. По умолчанию ng test открывает локалхост на 9876 порту и запускает тесты. Мне нужно выполнить все в консоли.
Установил phantomjs, через ng test —browser PhantomJS запускаются тесты. Но это не то, что нужно.
Мне нужно:
1) Чтобы запуск тестов отработал и завершился.
2) Сделать функцию уведомления о результатах тестов, например через telegram бот.

Ionic Framework 4 — лучшее решение для разработки прогрессивных веб приложений PWA?

Вышел стабильный релиз Ionic Framework “Ionic for everyone”, что можно перевести как “Ionic для каждого”. Но что имеется ввиду для каждого? Давайте разбираться.

Ionic 4 представляет из себя кульминацию более чем 2-х лет усердной работы. Сегодня Ionic это не просто фреймворк для создания мобильных приложений на Angular, это мощная система для разработки мобильных приложений для каждого разработчика, какими бы инструментами он не владел.

Еще в 2013 году Ionic стремился создать компоненты на основе Javascript для создания качественных мобильных приложений. Тогда не было стандартного способа создать компоненты, поэтому ребята взяли за основу Angular. И тогда это действительно была отличная идея: с помощью Angular можно было создать любой HTML тег и упаковать в него всю сложную логику.

Когда появился Angular 2, команда Ionic перенесла фреймворк на него, так появился Ionic 2 и 3.

Но сегодня помимо Angular развиваются другие фреймворки. На сегодняшний день React приобрел огромную популярность, а новые фреймворки, такие как Vue завоевали популярность очень быстро. Мир веб-разработки менялся последние годы настолько быстро, что стало ясно, Frontend-разработчики никогда не остановятся на какой-то конкретной технологии. Проблема Ionic заключалась в том, что им пользовались только те, кто принял Angular за основу разработки.

С 2013 по 2020 год во фронтенде произошло нечто замечательное: браузере сошлись в стандартизированной модели компонентов, что позволяет определять собственные теги HTML и легко распространять их среди других разработчиков. Этот набор API стал известен как веб-компоненты, и это все, что не хватало команде Ionic в 2013 году.

В 2020 году команда начала экспериментировать с веб-компонентами и решила перенести все 100 компонентов. Так появился Ionic 4.

Сегодня фреймворк распространяется в виде набора веб-компонент с использованием пользовательских элементов и API-интерфейсов Shadow DOM, доступных во всех современных мобильных и настольных браузерах.

Это означает, что практически каждый веб-разработчик теперь может использовать компоненты Ionic в своих мобильных, настольных и PWA веб-приложениях, просто используя HTML-теги Ionic.

Поскольку теперь Ionic ориентируется на стандартные веб-API, разработчики могут быть уверены, что API-компоненты Ionic останутся стабильными в течение многих лет.

Топ-пост этого месяца:  Урок 1. Git и Github. Введение. Что такое Git и Github

Производительность

Ionic 4 является самой полной и быстрой версией. Все 100 компонентов Ionic были протестированы на производительность. Команда провела полное обновление iOS и Material Design для каждого компонента в соответствии с последними стандартами на iOS и Android.

Веб-компоненты Ionic были оптимизированы для загрузки и скорости рендеринга, помогая приложениям Ionic достичь желаемого результата 100/100 в инструменте тестирования Lighthouse от Google.

Также команда значительно улучшила стартовые шаблоны, чтобы помочь разработчикам быстрее создавать крутой интерфейс.

Производительность для прогрессивных веб-приложений

Прогрессивные веб-приложения (PWA) сейчас в тренде, и Ionic 4 был спроектирован так, чтобы предоставить лучший UI для создания высокопроизводительных PWA.

Для достижения стандартов производительности, установленных Google, потребовались новые подходы к загрузке асинхронных компонентов. Чтобы добиться этого, команда Ionic потратили год на создание Stencil — генератора компонентов, который обеспечивает их упаковку.

В скором времени команда Ионик обещает опубликовать ряд инструкций по достижению максимальной производительности с различными фреймворками.

Кастомизация

Одним из самых значительных изменений в этой области является переход на нативное создание переменных CSS. Переменные CSS обеспечивают простой способ создания тем для приложений на IONIC вне зависимости от того какую инфраструктуру вы используете.

Обновленная документация

У Ionic отличная документация как в плане доступности информации, так и оформлению. Команда выпустила новую версию документации еще лучше, еще удобнее.

Идеально для вашей системы проектирования

Благодаря новым возможностям создания тем и независимые от фреймворка веб-компоненты, Ionic готова стать основой для создания интерфейсов. По сути, вы можете создать свой собственный UI, используя основу Ionic.

Используйте инструменты вашей платформы

Когда Ionic 2 был построен на основе Angular, а современные инструменты JavaScript только появлялись, Ionic пришлось создать достаточное количество инструментов для компиляции приложений. Не говоря уже, что решения по типу Angular Router, еще находились на стадии разработки и еще не были готовы для использования, команде приходилось создавать свои собственные.В Ionic 4 теперь используются официальные инструменты платформы для сборки, объединения и маршрутизации, чтобы вы могли получить максимальную отдачу от экосистемы вашей платформы. Это означает, что вы будете использовать Angular CLI при использовании Ionic с Angular, Vue CLI с Vue.js и так далее.

Поскольку элементы управления пользовательского интерфейса Ionic теперь основаны на API-интерфейсах веб-компонентов, они обычно могут работать «из коробки» во всех основных средах (Angular, React, Vue и т. Д. .)

Тем не менее, Ionic также должен интегрироваться с системой маршрутизации фреймворка, поэтому нам по-прежнему приходится предоставлять функции, специфичные для фреймворка. Кроме того, разработчики в каждой среде ожидают, что что-то будет работать определенным образом, например, разработчики React ожидают MyComponent заместо my-component).

Лучшее из мира Angular за неделю

Дайджест №1 (18 января — 25 января)

Свежая подборка со ссылками на новости и материалы.

⚡ Релизы

Angular

Angular CLI

Angular CLI 7.2.3 — исправлены ошибки, улучшена стабильность

Angular CLI 7.3.0-beta.0 — множество улучшений связанных с Ivy, добавлен флаг experimentalIvy для генерации нового приложения с Ivy

IONIC

TypeScript

TypeScript 3.3 RC — улучшили поддержку Union Types и в 4 раза ускорили инкрементальную сборку Composite Projects.

Тесты в Angular

В Angular для тестов используются два инструмента:
Jasmine — фреймворк для написания тестов, и
Karma — инструмент для запуска этих тестов в браузере.


Jasmine

Методы Jasmine

  • describe(description, function) — метод применяется для группировки взаимосвязанных тестов
  • beforeEach(function) — метод применяется для назначения задачи, которая должна выполняться перед каждым тестом
  • afterEach(function) — метод применяется для назначения задачи, которая должна выполняться после каждого тестом
  • it(description, function) — метод применяется для выполнения теста
  • expect(value) — метод применяется для идентификации результата теста
  • toBe(value) — метод применяется для задания ожидаемого значения теста: метод сравнивает результат со значением
  • toEqual(object) — проверяет, что результатом является тот же объект, что и заданное значение
  • toMatch(regexp) — проверяет, что результат соответствует заданному регулярному выражению
  • toBeDefined() — проверяет, что результат определен
  • toBeUndefined() — проверяет, что результат не определен
  • toBeNull() — проверяет, что результат равен Null
  • toBeTruthy() — проверяет, что результат является квазиистинным
  • toBeFalsy() — проверяет, что результат является квазиложным
  • toContain(substring) — проверяет, что результат содержит заданную подстроку
  • toBeLessThan(value) — проверяет, что результат меньше заданного значения
  • toBeGreaterThan(value) — проверяет, что результат больше заданного значения

Класс TestBed и его методы

Класс TestBed — отвечает за моделирование среды приложения Angular для выполнения тестов.

  • TestBed.configureTestingModule — настраиваем тестовый модуль;
  • TestBed.createComponent — получаем экземпляр компонента;
  • compileComponents — применяется для компиляции компонентов. compileComponents возвращает Promise , который позволяет настроить основные переменные для теста после компиляции компонента (например, когда мы используем внешний шаблон и т.д.);

Обратите внимание на метод async , который занимается тем, что отслеживает все асинхронные задачи внутри него, скрывая от нас сложность асинхронного выполнения.

ComponentFixture

Результатом метода createComponent является объект ComponentFixture , который предоставляет свойства и методы для тестирования компонента:

  • componentInstance — возвращает объект компонента;
  • nativeElement — возвращает объект DOM, представляющий управляющий элемент для компонента;
  • debugElement — возвращает тестовый управляющий элемент для компонента;
  • detectChanges() — принуждает тестовую среду обнаруживать изменения состояния и отображать их в шаблоне компонента;
  • whenStable() — возвращает объект Promise , разрешаемый при полной обработке всех изменений (используется с асинхронностью, например, когда вы получаете данные асихронно от какой-либо фейковой службы)

ComponentFixture.debugElement

Свойство ComponentFixture.debugElement — возвращает объект типа DebugElement (корневой элемент шаблона компонента).

debugElement имеет ряд свойств и методов:

  • nativeElement — возвращает объект, представляющий объект HTML в DOM;
  • children — возвращает массив ‘дочерних’ объектов типа DebugElement ;
  • query(selectorFunction) — функция selectorFunction получает в качестве параметра объект типа DebugElement для каждого элемента HTML в шаблоне; функция возвращает первый объект типа DebugElement , для которого функция вернет true;
  • queryAll(selectorFunction) — аналогично query, но вернет все объекты типа DebugElement ;
  • triggerEventHandler(name, event) — инициируем событие, например, при помощи декоратора @HostListener ;

Класс By

Класс By позволяет находить элементы в шаблоне компонента благодаря своим ститическим методам:

Unit-тесты: тестирование сервисов

angular-cli при создании сервиса генерирует файл вида name_service.spec.ts как болванку для теста. В данном файле с помощью хелперов TestBed и inject создается наша сущность.

Топ-пост этого месяца:  Команда Яндекса запустила очередного уникального бота

TestBed помогает сконфигурировать модуль, в котором мы должны указать provider для нашего сервиса. inject — это хелпер, который помогает запустить injector по заданному провайдеру, благодаря ему мы получаем экземпляр нашего сервиса (service: ArticleService) .

Далее мы проводим простой тест на то, что сервис существует:

Полный код теста, который изначально сгенерировал angular-cli:

Допустим, в сервисе у нас есть метод sum , который возвращает результат сложения двух чисел:

Протестируем метод sum :

Чтобы запустить тесты необходимо выполнить команду ( ng test в package.json):

Итак, тесты прошли, вы можете увидеть в браузере:


Pаботаем с асинхронным методом в сервисе

Асинхронный метод в сервисе sum.service.ts :

Тестируем в sum.service.spec.ts :

Для эмуляции асинхронности в Angular присутствует метод fakeAsync . Также для эмуляции асинхронности присутствуют два дополнительных метода, которые мы используем внутри метода fakeAsync : flush ( flush внутри fakeAsync сбросит все асинхронности, то есть выполнит их синхронно), tick — принимает параметр (кол-во миллисекунд), по истечении которых выполнится код в методе fakeAsync .

Метод whenStable

Метод whenStable возвращает объект Promise , разрешаемый при полной обработке всех изменений (используется с асинхронностью, например, когда вы получаете данные асихронно от какой-либо фейковой службы). Например, это дает нам возможность дождаться выполнения Observable и лишь затем протестировать наши изменения.

Unit-тесты: тестирование httpClient

Рассмотрим как тестировать сервисы, которые содержат http-запросы.

Чтобы тестировать http-запросы необходимо также настроить proxy. В файле karma.conf.js укажите параметр proxies :

Если консоль будет пестреть ошибками вида StaticInjectorError(DynamicTestModule)[HttpClient] , то это означает, что в компоненте используются http-запросы и необходимо импортировать HttpClientModule :

В сервисе у нас есть два запроса:

Протестируем запрос на получение cat по id .

Unit-тесты: тестирование pipe

Создадим pipe , который будет переворачивать строку — reverse-string .

Фильтры мы можем тестировать как обычный js-код, то есть тестировать класс, а в этом классе тестировать метод.

Хелпер beforeEach

Хелпер beforeEach позволяет задать код, который будет выполнен перед каждым тестом. Например, чтобы каждый раз не создавать экземпляр pipe (смотрите пример — Unit-тесты: тестирование pipe ) мы можем вынести его в beforeEach :

Unit-тесты: Тестируем компонент

В компоненте мы будем получать посредством метода компонента getCat и сервиса по id определенную cat и выводить cat.name в шаблоне. Мы должны проверить, что в методе вызывается сервис и то что значение записывается в переменную компонента cat .

Unit-тесты: Тестируем директиву

Наша директива эмитит(передает наверх) родительскому компоненту количество кликов.

Следует использовать angular -cli для проектов

Этот вопрос уже может быть задан, но я не могу найти хороший ответ на этот вопрос.

Я новичок в angular 2, и я увидел отличный проект angular -cli » которые предлагают множество функций из коробки и используют лучшие практики. но моя главная проблема заключается в том, что этот angular -cli все еще находится в стадии бета-тестирования, и его обновления идут очень часто. поэтому я должен использовать его для своих приложений или нет. например

  • можно легко добавлять новые приложения в приложение.
  • новое обновление может полностью разорвать приложение.

это некоторые из моих проблем или мне следует рассмотреть некоторые альтернативные варианты до тех пор, пока angular -cli не станет стабильным, если да, пожалуйста, рекомендуйте некоторые

Я полагаю, что перед использованием инструмента, такого как Angular -Cli, вы должны сначала понять, что делает CLI. Таким образом, я бы посмотрел на руководства, которые сначала создают приложения с нуля, как только у вас есть знания о том, как создать приложение с нуля, и затем посмотрите на инструменты, которые помогут автоматизировать некоторые из мирских задач.

Это поможет в диагностике неисправностей. Если вы не знаете, как работают определенные функции, это вызовет множество проблем, пытающихся найти ответы на вопрос. Это говорит о том, что вы можете использовать CLI, чтобы запустить приложение и запустить его, а затем отключить его, чтобы попытаться понять, что происходит.

Также, как уже упоминалось, Angular CLI все еще находится в бета-версии и, следовательно, может иметь непредвиденные ошибки, которые не способствуют изучению новых вещей.

Существует полезный пост reddit, который обновляется довольно много с помощью новейших семян angular2. Вы можете проверить это, есть много разных семян, которые могут вам подойти.

Что касается Is angular -cli хорошо? вопрос, это полностью основанное мнение, зависит от того, что вам нужно.

Angular CLI: мощный инструмент для тестирования и создания приложений

The Angular CLI makes it easy to create an application that already works, right out of the box. It already follows our best practices!

ng generate

Generate components, routes, services and pipes with a simple command. The CLI will also create simple test shells for all of these.

ng serve

Easily test your app locally while developing.

Test, Lint

Make your code really shine. Run your unit tests, your end-to-end tests, or execute the official Angular linter with the breeze of a command.

Powered by Google. Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.

progtask.ru

Всё про программирование

Делаем Angular приложение десктопным. Angular + Electron

В данной статье мы создадим Angular приложение и запустим его как десктопное, используя для этого Electron.

Для начала необходимо установить Angular CLI:

После установки создадим приложение Angular:

После создания приложения необходимо перейти в папку с проектом:

Теперь установим electron в наше приложение:

После его установки добавим в корень нашего приложения файл main.js со следующим содержимым:

Теперь нам нужно добавить в package.json информацию о точке входа в приложение (это будет файл main.js):

Также нужно в секцию scripts добавить скрипт для запуска electron с нашим приложением:

Автоматизируем разработку на Angular с помощью Angular CLI

Полгода назад я начал рассказывать о веб-фреймворке Angular 2, который Google выпустил в сентябре 2020. В марте 2020 Angular 2 будет переименован в просто Angular и изменится методика нумерации новых релизов. Так, например, мартовская версия выйдет под номером 4.0.0, сентябрьская — 5.0.0 и т.д. Однако все новые версии будут базироваться на Angular 2, так что нет оснований для беспокойства.

Топ-пост этого месяца:  Как настроить смарт-баннеры в Яндекс.Директ

Изначально многих JavaScript разработчиков пугала сложность и обилие конфигурационных файлов и тулзов требуемых для того, чтобы начать и задеплоить даже простое приложение. Нужно было изучить язык TypeScript (можно и без него, если скорость разработки вас не волнует), разобраться с настройками компилятора TypeScript, понять, как работать с модулями EcmaScript 6, выбрать загрузчик модулей (SystemJS или Webpack), сконфигурировать тесты, npm, веб-сервер. Добавьить скрипты и тулзы для оптимизации и деплоймента готового приложения, и появляется желание послать это все подальше и вернуться к простенькому, но миленькому jQuery.

Однако в Google тоже не дураки сидят, и был придуман Angular CLI, специальный тул, запускаемый из командной строки, который автоматизирует все стадии создания приложения, начиная с авто-генерации стартового проекта и конфигурационных файлов для деплоймента (дев и прод) и тестирования. Под капотом Angular CLI использует мощный упаковщик модулей Webpack, который популярен среди JavaScript разработчиков.

Если год назад я использовал загрузчик модулей SystemJS с последующей ручной конфигурацией билдов с помощью Webpack, то теперь SystemJS я использую в основном для демонстраций отдельных фич Angular во время презентаций и демок. Angular CLI стал моим основным тулзом, ибо кому охота вручную выпиливать все эти конфигурации и думать, как минимизировать размер приложения. В этой статье я покажу вам, как создать, упаковать и задеплоить простой проект с помощью Angular CLI.

Для начала, установите NodeJS. И для Angular, и для Angular CLI нужно много дополнительных библиотек (packages), которые находятся в репозитории NPM по адресу www.npmjs.com (для джавистов скажу, что это аналог Maven Central). NodeJS идет с менеджером пакетов npm, который умеет устанавливать необходимые пакеты (зависимости вашего проекта) либо индивидуально, либо согласно конфигурационного файла package.json (для джавистов — аналог pom.xml).

После установки NodeJS вы сможете начать пользоваться npm с командной строки, чтобы установить и сам Angular CLI, и все необходимые зависимости для вашего проекта. Команда установки Angular CLI глобально для всех проектов выглядит так (-g значит установить глобально):

npm install @angular/cli -g

Angular CLI — это огромная горилла, и его установка займет пару минут, но после установки вы сможете пользоваться командой ng, чтобы генерировать различные ангуляровкие артифакты: новый проект, компоненты, сервисы и т.д. Кроме того, вы сможете делать билды и запускать проект с помощью веб-сервера webpack-dev-server, который будет установлен в вашем проекте.

Давайте создадим новый проект myproject с помощью следующей команды:

ng new myproject

Эта команда создаст новую директорию с готовым проектом и установит там все необходимые пакеты — тысячи файлов — в директории node_modules. Тысячи файлов звучит пугающе для программистов на JavaScript, но те же джависты привыкли к таким количествам во время разработки. В зависимости от скорости вашего интернета процесс генерации этого проекта может занять от двух до пяти минут, но этот процесс повторять не придется.

Время установки зависимостей можно существенно сократить, заменив npm более быстрым менеджером пакетом Yarn. Я написал, как это сделать в этом блоге.

Зайдите в директорию только что сгенерированного проекта, и вы увидите вот такую структуру:

Чтобы собрать дев-версию этого проекта выполните следующую команду:

Теперь откройте броузер по адресу http://localhost:4200, и вы увидите вот такую страничку, которая рендерится компонентом верхнего уровня app.component.ts:

Figure 2. Запускаем приложение

У Angular CLI есть много других команд, о которых можно прочесть в документации. А сейчас я просто покажу вам пару способов сборки приложения.

Команда ng serve запустила сервер webpack-dev-server, который стартовал Webpack, который в свою очередь взял все файлы из нашего проекта и собрал их в пакет в оперативной памяти. Размер это приложения не был оптимизирован, потому что мы работаем в режиме разработки. Откройте вкладку Network в Dev Tools вашего броузера, и вы увидите, что размер этого крошечного приложения около трех мегабайт. Давайте уменьшим этот размер, заказав оптимизированную сборку для продакшн:

Освежите страничку localhost:4200. Наше приложение похудело до 130KB. Когда вы строите приложение с ключом -prod, Angular CLI выполняет Ahead-Of-Time (AoT) компиляцию и не пакует сам компилятор вместе с приложением. Без AoT компилятор грузится в броузер и на месте компилирует Aнгуляровские примочки в чистый JavaScript.

Если честно, AoT уменьшает размер только небольших приложений. Но пре-компиляция все равно очень полезна, т.к. скорость рендеринга существенно возрастает из-за ненужности компиляции в броузере.

Команда ng serve упаковывает (creates bundles) приложение в оперативной памяти и автоматически перестраивает пакет, как только разработчик вносит изменения в коd приложения. Это хорошо, но для продакшн сборки и деплоймента нужны реальные файлы. Для этого есть другая команда: ng build. Эта команда создает директорию dist и записывает туда собранные файлы (и их gzip-версии) готовые для деплоймента. Туда также идут стили, картинки, шрифты и другие ресурсы необходимые для вашего приложения. Выполните вот такую команду:

Сборка готова. Теперь скопируйте содержимое директории dist туда, где находится ваш веб-сервер Apache, NGINX, Tomcat или любой другой. Процесс сборки и деплоймента можнo и нужно автоматизировать с помощью таких тулзов, как npm scripts, Gulp, Grunt и т.п.

В этой статье я показал пример генерации и сборки очень простого Angular приложения с помощью Angular CLI. Если вы планируете программировать с Angular, сначала познакомьтесь с языком TypeScript, который поддерживает классы, интерфейсы, аннотации, генерики, а главное, типы данных. Если вы уже знаете JavaScript — это хорошо. А если нет, учите сразу TypeScript. Friends don’t teach friends JavaScript. They teach TypeScript.

В интернете есть много ресурсов для изучения Angular. Вышло несколько книг, включая и нашу «Angular 2 Development with TypeScript». В конце февраля я и мой соавтор Антон будем проводить онлайн тренинг по выходным, а в мае я планирую приехать в Киев и провести трехдневный тренинг вживую.

Я записал видео, которое показывает, как сгенерировать и задеплоить проект с помощью Angular CLI:

Добавить комментарий