Тестовое задание на Angular. Настройка базового приложения.

Aleksandr Serenko
F.A.F.N.U.R
Published in
4 min readJul 5, 2021

В данной статье будем использовать стандартные Angular CLI для создания базового приложения.

Создание нового приложения

Первым делом создадим новое Angular приложение.

Есть несколько способов создать новое приложение в Angular, но обычно оно сводиться к двум: созданием с помощью стандартного angular-cli, либо использование более мажорного варианта — это использовать Nx (монорепозиторий для Angular и не только).
Nx хорош тем, что предоставляет множество хороших техник и технологий, такие как настроенный eslint, тестирование с помощью jest и cypress, создание библиотек и соответствующих алиасов, кеширование тестов и много чего еще. Однако, это хорошо для бывалого разработчика и enterprise решений, а для тестового задания хватит обычного стека.

Для этого сначала установим @angular/cli, запустив команду:

npm install -g @angular/cli

Для любителей yarn, можно выполнить команду:
yarn global add
@angular/cli

Однако, нужно убедиться, что в PATH попадает yarn global bin, для того чтобы yarn мог использовать глобальные пакеты

После установки CLI перейдем в каталог, где хранятся проекты и запустим команду:

ng new barinb

Команда создаст новое приложение, которое будет называться barinb. Небольшой каламбур из слов “барин” и “airbnb”.

Не выбирайте в качестве названия проекта — test-project или что-то, что содержит слово тест или тестовое. Включите фантазию, придумайте что-то креативное или звучное.

Убедимся, что в проекте создался git репозиторий, например с помощью команды tig:

После того, как репозиторий был создан, запушим его в github.

Для этого создайте репозиторий в github и следуйте инструкциям. Но обычно достаточно установить remote и запушить.

После создания приложения и репозитория, остается только один вопрос. Использовать ли git flow.

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

Настройка линтера

Angular до версии 12, по умолчанию в качестве линтера использует tslint, а с 12 версии уже используется eslint.

Так как сейчас стабильная версия Angular 12, данный шаг руководства можно пропустить, но я все же приведу пример простой интеграции с angular-eslint, который можно использовать в проектах до 11 версии.

Установим angular-eslint, запустив команду:

ng add @angular-eslint/schematics

И мигрируем на eslint, где в качестве последнего проекта указываем название проекта:

ng g @angular-eslint/schematics:convert-tslint-to-eslint barinb

Как видим, команда создала .eslintrc.json.

В angular.json в качестве линтера стал использоваться — @angular-eslint/builder:lint.

Так как при миграции были добавлены правила связанные с Angular, добавим общепринятые практики в eslint:

"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@angular-eslint/recommended",

Удалим ненужные зависимости:

yarn remove codelyzer tslint

Удалим tslint.json :

rm tslint.json

Закомитим изменения, так как уже накопилось изменений, которые можно сохранить.

И если linter это хорошо, то prettier позволит нам следовать определенными нами же правилами.

Добавим prettier в проект:

yarn add -D prettier

Создадим файл .prettierrc, который добавит немного правил для переписывания кода:

А также создадим .prettierignore, где заигнорим файлы проекта, которые не должны быть переписаны.

# Add files here to ignore them from prettier formatting
/dist
/coverage
/tmp
/node_modules
/nginx
/.vscode
/.idea
package-lock.json
package.json
yarn.lock

Теперь воспользуемся мощью JetBrains и Webstorm и запустим prettier для всего проекта:

Как видно, prettier будет запускаться для следующих файлов:

{**/*,*}.{js,ts,jsx,tsx,json,scss,css,html}

Ссылки

Вернуться к оглавлению — Введение.

Следующая статья — Настройка базовых стилей и Angular Material.

Предыдущая статья — Оглавление.

Все исходники на github/fafnur/barinb.

Группа в Medium: https://medium.com/fafnur
Группа в Vkontakte: https://vk.com/fafnur
Группа в Facebook: https://www.facebook.com/groups/fafnur/
Telegram канал: https://t.me/f_a_f_n_u_r
Twitter: https://twitter.com/Fafnur1
LinkedIn: https://www.linkedin.com/in/fafnur

--

--

Aleksandr Serenko
F.A.F.N.U.R

Senior Front-end Developer, Angular evangelist, Nx apologist, NodeJS warlock