Конфигурационные файлы

В Angular конфигурационные файлы играют важную роль в настройке и управлении приложением. Они используются для определения параметров сборки, окружений, а также для настройки различных аспектов работы фреймворка. Различие между различными окружениями (например, для разработки, тестирования и продакшн) становится возможным благодаря гибкой системе конфигурации Angular. Рассмотрим основные конфигурационные файлы, с которыми работает Angular, а также их структуру и назначение.

Файл angular.json

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

Структура angular.json

Файл имеет следующую структуру:

{
  "version": 1,
  "projects": {
    "project-name": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/project-name",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.app.json",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.css"
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            }
          }
        }
      }
    }
  }
}

Основные разделы

  • version: Версия конфигурации. В настоящее время используется версия 1.
  • projects: Описание проектов в приложении. Каждый проект имеет набор конфигураций, определяющих его сборку.
  • architect: Содержит настройки для различных этапов сборки, таких как build, serve, test, lint, и других.
  • build: Определяет параметры сборки для проекта. Включает настройки для файлов, скриптов, стилей, а также настройки для различных конфигураций (например, для production).
  • configurations: Позволяет задать различные конфигурации для различных окружений (например, production или development), включая параметры оптимизации, замену файлов и другие настройки.

Файлы окружений

Angular предоставляет механизм для работы с разными окружениями через файлы в папке src/environments. Эти файлы содержат переменные и настройки, которые могут отличаться в зависимости от того, в каком окружении работает приложение. Обычно создаются два файла: environment.ts для разработки и environment.prod.ts для продакшн-окружения.

Пример файла environment.ts

export const environment = {
  production: false,
  apiUrl: 'https://dev-api.example.com'
};

Пример файла environment.prod.ts

export const environment = {
  production: true,
  apiUrl: 'https://api.example.com'
};

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

"fileReplacements": [
  {
    "replace": "src/environments/environment.ts",
    "with": "src/environments/environment.prod.ts"
  }
]

Файл tsconfig.json

Файл tsconfig.json — это конфигурационный файл TypeScript, который используется для настройки компилятора TypeScript. Он определяет, как TypeScript должен компилировать код приложения. В Angular создаются несколько конфигурационных файлов tsconfig, включая общий файл для приложения и специализированные файлы для тестов и сборок.

Пример tsconfig.json

{
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./out-tsc",
    "target": "es2015",
    "module": "es2020",
    "moduleResolution": "node",
    "strict": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": [
    "src/**/*.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}
  • compilerOptions: Содержит параметры компилятора TypeScript, такие как целевая версия ECMAScript (target), режим модуля (module), а также флаги для строгой проверки типов и других параметров.
  • include и exclude: Определяют, какие файлы и каталоги должны быть включены или исключены из процесса компиляции.

Файл karma.conf.js

Файл karma.conf.js используется для конфигурации тестового фреймворка Karma, который интегрируется с Angular для запуска юнит-тестов. В нем настраиваются параметры, такие как браузеры для запуска тестов, файлы, которые будут включены в тесты, а также настройки для тестовых фреймворков.

Пример конфигурации для Karma

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: [
      'src/**/*.spec.ts'
    ],
    preprocessors: {
      'src/**/*.spec.ts': ['webpack']
    },
    browsers: ['Chrome'],
    singleRun: false,
    concurrency: Infinity
  });
};

Файл package.json

Файл package.json является важным элементом конфигурации, так как он управляет зависимостями проекта, скриптами для запуска сборок, тестов и другими аспектами работы с проектом. Он не является исключительно конфигурационным для Angular, но в нем указываются зависимости Angular и инструменты для сборки и разработки, такие как Webpack и TypeScript.

Пример раздела scripts в package.json

"scripts": {
  "ng": "ng",
  "start": "ng serve",
  "build": "ng build",
  "test": "ng test",
  "lint": "ng lint",
  "e2e": "ng e2e"
}

В данном разделе определены скрипты для запуска различных команд Angular CLI, таких как запуск приложения (ng serve), сборка проекта (ng build), запуск юнит-тестов (ng test) и другие.

Заключение

Конфигурационные файлы в Angular играют ключевую роль в процессе разработки и сборки приложения. Файлы, такие как angular.json, tsconfig.json, и karma.conf.js, позволяют настраивать сборку, тестирование и другие аспекты проекта. Благодаря гибкости этих настроек можно оптимизировать приложение под различные окружения, управлять зависимостями и интегрировать сторонние инструменты для улучшения процесса разработки.