환경설정

Angular 워크스페이스 설정

Angular 워크스페이스 루트에 있는 angular.json 파일은 워크스페이스 전체와 개별 프로젝트의 기본 설정을 제공합니다. 이 설정은 Angular CLI가 제공하는 빌드 및 개발 도구에서 사용합니다. 설정에 지정하는 경로 값은 워크스페이스 루트 디렉터리를 기준으로 하는 상대 경로입니다.

JSON의 전체 구조

angular.json의 최상위에는 워크스페이스를 설정하는 몇 가지 프로퍼티가 있고, projects 섹션에는 나머지 프로젝트별 설정 옵션이 있습니다. 프로젝트 수준의 기본값으로 워크스페이스 수준에서 설정한 Angular CLI 기본값을 덮어쓸 수 있습니다. 명령줄을 사용하여 프로젝트 수준의 기본값도 덮어쓸 수 있습니다.

파일의 최상위에 있는 다음 프로퍼티로 워크스페이스를 설정합니다.

프로퍼티 설명
version 설정 파일의 버전입니다.
newProjectRoot ng generate application이나 ng generate library 같은 도구로 새 프로젝트를 생성할 경로입니다. 절대 경로나 워크스페이스 디렉터리 기준 상대 경로를 사용할 수 있습니다. 기본값은 projects입니다.
cli Angular CLI를 사용자 정의하는 옵션 집합입니다. 아래 Angular CLI 설정 옵션을 참고하세요.
schematics 이 워크스페이스의 ng generate 하위 명령어 옵션 기본값을 사용자 정의하는 스키매틱 집합입니다. 아래 스키매틱을 참고하세요.
projects 워크스페이스의 각 애플리케이션이나 라이브러리에 대한 하위 섹션을 포함하며, 프로젝트별 설정 옵션을 지정합니다.

ng new app-name으로 생성한 초기 애플리케이션은 "projects" 아래에 나열됩니다.

ng generate library로 라이브러리 프로젝트를 생성하면 해당 프로젝트도 projects 섹션에 추가됩니다.

HELPFUL: 설정 파일의 projects 섹션은 워크스페이스의 파일 구조와 정확히 일치하지 않습니다.

  • ng new로 생성한 초기 애플리케이션은 워크스페이스 파일 구조의 최상위에 있습니다.
  • 다른 애플리케이션과 라이브러리는 기본적으로 projects 디렉터리 아래에 있습니다.

자세한 내용은 워크스페이스와 프로젝트 파일 구조를 참고하세요.

Angular CLI 설정 옵션

다음 프로퍼티는 Angular CLI를 사용자 정의하는 옵션입니다.

프로퍼티 설명 값의 타입 기본값
analytics 익명 사용 데이터를 Angular 팀과 공유합니다. 불리언 값은 데이터 공유 여부를 나타내며, UUID 문자열을 지정하면 가명 식별자를 사용하여 데이터를 공유합니다. boolean | string false
cache Angular CLI 빌더가 사용하는 영구 디스크 캐시를 제어합니다. 캐시 옵션 {}
schematicCollections ng generate에서 사용할 스키매틱 컬렉션 목록입니다. string[] []
packageManager 사용할 기본 패키지 관리자 도구입니다. npm | pnpm | yarn | bun npm
warnings Angular CLI 전용 콘솔 경고를 제어합니다. 경고 옵션 {}

캐시 옵션

프로퍼티 설명 값의 타입 기본값
enabled 빌드에 디스크 캐시를 사용할지 설정합니다. boolean true
environment 디스크 캐시를 사용할 환경을 설정합니다.

- ci: 지속적 통합(CI) 환경에서만 캐시를 사용합니다.
- local: CI 환경 외부에서만 캐시를 사용합니다.
- all: 모든 환경에서 캐시를 사용합니다.
local | ci | all local
path 캐시 결과를 저장할 디렉터리입니다. string .angular/cache

경고 옵션

프로퍼티 설명 값의 타입 기본값
versionMismatch 전역 Angular CLI 버전이 로컬 버전보다 최신이면 경고를 표시합니다. boolean true

프로젝트 설정 옵션

각 프로젝트의 projects['project-name'] 아래에서 다음 최상위 설정 프로퍼티를 사용할 수 있습니다.

프로퍼티 설명 값의 타입 기본값
root 워크스페이스 디렉터리를 기준으로 한 프로젝트 파일의 루트 디렉터리입니다. 워크스페이스 최상위에 있는 초기 애플리케이션에서는 빈 값입니다. string 없음(필수)
projectType application 또는 library 중 하나입니다. 애플리케이션은 브라우저에서 독립적으로 실행할 수 있지만 라이브러리는 그럴 수 없습니다. application | library 없음(필수)
sourceRoot 프로젝트 소스 파일의 루트 디렉터리입니다. string ''
prefix Angular가 ng generate로 새 컴포넌트, 디렉티브, 파이프를 생성할 때 셀렉터 앞에 붙이는 문자열입니다. 애플리케이션이나 기능 영역을 식별하도록 사용자 정의할 수 있습니다. string 'app'
i18n 프로젝트의 국제화 옵션입니다. 원본 지역과 추가로 빌드할 지역을 정의합니다. 빌드 설정에서 지역 정의하기를 참고하세요. i18n 옵션 참고 {}
schematics 이 프로젝트의 ng generate 하위 명령어 옵션 기본값을 사용자 정의하는 스키매틱 집합입니다. 스키매틱 섹션을 참고하세요. 스키매틱 참고 {}
architect 프로젝트의 Architect 빌더 대상에 대한 기본 설정입니다. 빌더 대상 설정하기 참고 {}

i18n 옵션

i18n 프로젝트 옵션으로 애플리케이션의 원본 지역과 추가로 빌드할 지역을 정의하세요.

프로퍼티 설명 값의 타입 기본값
sourceLocale 애플리케이션 소스 코드에서 사용하는 지역입니다. 지역 식별자 문자열이나 설정 객체를 사용할 수 있습니다. string | sourceLocale 객체 "en-US"
locales 지역 식별자를 번역 파일 또는 지역 설정 객체에 연결하는 맵입니다. object {}

sourceLocale 객체

원본 지역의 출력 디렉터리나 기본 HREF를 사용자 정의하려면 문자열 대신 객체를 전달하세요.

프로퍼티 설명 값의 타입 기본값
code 원본 지역의 식별자입니다. string "en-US"
baseHref 이 지역의 HTML <base href>를 덮어씁니다. 출력 디렉터리 이름은 지역 코드로 유지됩니다. subPath와 함께 사용할 수 없습니다. string 지역 코드
subPath 이 지역의 출력 디렉터리 이름과 HTML <base href>를 함께 설정합니다. baseHref와 함께 사용할 수 없습니다. string 지역 코드

지역 객체

locales의 각 항목은 경로 문자열, 경로 배열 또는 객체일 수 있습니다.

프로퍼티 설명 값의 타입 기본값
translation 이 지역의 번역 파일 경로 하나 또는 여러 개입니다. string | string[]
baseHref 이 지역의 HTML <base href>를 덮어씁니다. 출력 디렉터리 이름은 지역 식별자로 유지됩니다. subPath와 함께 사용할 수 없습니다. string 지역 코드
subPath 이 지역의 출력 디렉터리 이름과 HTML <base href>를 함께 설정합니다. baseHref와 함께 사용할 수 없습니다. string 지역 코드

HELPFUL: 출력 디렉터리 이름도 바꿔야 한다면 baseHref 대신 subPath를 사용하세요. 예를 들어 de/ 대신 de-DE/로 출력할 때 사용할 수 있습니다.

스키매틱

Angular 스키매틱은 새 파일을 추가하거나 기존 파일을 수정하여 프로젝트를 변경하는 지침입니다. 스키매틱 이름을 기본 옵션 집합에 연결하여 설정할 수 있습니다.

스키매틱의 "이름"은 <schematic-package>:<schematic-name> 형식입니다. 기본 Angular CLI ng generate 하위 명령어의 스키매틱은 @schematics/angular 패키지에 모여 있습니다. 예를 들어 ng generate component로 컴포넌트를 생성하는 스키매틱은 @schematics/angular:component입니다.

스키매틱 스키마의 필드는 Angular CLI 하위 명령어 옵션에 허용되는 명령줄 인수 값과 기본값에 대응합니다. 워크스페이스 스키마 파일을 업데이트하여 하위 명령어 옵션의 기본값을 변경할 수 있습니다. 예를 들어 ng generate component에서 standalone을 기본적으로 비활성화하려면 다음과 같이 설정합니다.

{
  "projects": {
    "my-app": {
      "schematics": {
        "@schematics/angular:component": {
          "standalone": false
        }
      }
    }
  }
}

CLI 빌더 설정하기

Architect는 Angular CLI가 컴파일이나 테스트 실행과 같은 복잡한 작업을 수행하는 데 사용하는 도구입니다. Architect는 대상 설정에 따라 지정한 빌더를 실행하여 작업을 수행하는 셸입니다. 새로운 빌더와 대상을 정의하고 설정하여 Angular CLI를 확장할 수 있습니다. Angular CLI 빌더를 참고하세요.

기본 Architect 빌더와 대상

Angular는 특정 명령어나 범용 ng run 명령어에서 사용할 기본 빌더를 정의합니다. 각 빌더의 옵션과 기본값을 정의하는 JSON 스키마는 @angular/build 패키지에 모여 있습니다. 이 스키마로 다음 빌더의 옵션을 설정합니다.

빌더 대상 설정하기

angular.json의 architect 섹션에는 Architect 대상 집합이 있습니다. 대부분의 대상은 해당 대상을 실행하는 Angular CLI 명령어에 대응합니다. 다른 대상은 ng run 명령어로 실행할 수 있으며, 직접 대상을 정의할 수도 있습니다.

각 대상 객체는 해당 대상의 builder를 지정합니다. 이는 Architect가 실행할 도구의 npm 패키지입니다. 각 대상에는 기본 옵션을 설정하는 options 섹션과 이름이 있는 대체 설정을 지정하는 configurations 섹션도 있습니다. 아래 빌드 대상의 예제를 참고하세요.

프로퍼티 설명
build ng build 명령어 옵션의 기본값을 설정합니다. 자세한 내용은 빌드 대상 섹션을 참고하세요.
serve ng serve 명령어 옵션의 기본값을 설정합니다. 개발 서버에는 자체 옵션이 있으며, buildTarget 옵션으로 지정한 빌드 대상을 사용해 애플리케이션을 빌드합니다.
e2e 엔드투엔드 테스트를 실행하는 ng e2e 명령어 옵션의 기본값을 설정합니다. ng new로 생성되지 않습니다. 이 대상 없이 ng e2e를 실행하면 엔드투엔드 테스트 패키지를 추가할지 묻습니다.
test ng test 명령어 옵션의 기본값을 설정합니다. 단위 테스트 빌더는 buildTarget 옵션으로 지정한 빌드 대상을 사용해 테스트를 빌드합니다.
lint 프로젝트 소스 파일의 정적 코드 분석을 수행하는 ng lint 명령어 옵션의 기본값을 설정합니다. ng new로 생성되지 않습니다. 이 대상 없이 ng lint를 실행하면 angular-eslint를 추가할지 묻습니다.
extract-i18n 소스 코드에서 지역화할 메시지 문자열을 추출하고 국제화를 위한 번역 파일을 출력하는 ng extract-i18n 명령어 옵션의 기본값을 설정합니다.

HELPFUL: 설정 파일의 모든 옵션은 명령줄에서 사용하는 dash-case 대신 camelCase로 작성해야 합니다.

빌드 대상

architect 아래의 각 대상에는 다음 프로퍼티가 있습니다.

프로퍼티 설명
builder 이 대상을 생성할 CLI 빌더입니다. <package-name>:<builder-name> 형식으로 지정합니다.
options 빌드 대상의 기본 옵션입니다.
configurations 대상을 실행할 때 사용할 대체 설정입니다. 각 설정은 해당 환경의 기본 옵션을 지정하고 options의 대응하는 값을 덮어씁니다. 아래 대체 빌드 설정을 참고하세요.

예를 들어 최적화를 비활성화한 빌드를 설정하려면 다음과 같이 작성합니다.

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "optimization": false
          }
        }
      }
    }
  }
}

대체 빌드 설정

Angular CLI는 production과 development라는 두 가지 빌드 설정을 제공합니다. 기본적으로 ng build 명령어는 production 설정을 사용하며, 다음과 같은 빌드 최적화를 적용합니다.

  • 파일 번들링
  • 불필요한 공백 최소화
  • 주석 및 사용하지 않는 코드 제거
  • 식별자를 짧은 이름으로 바꾸는 코드 압축

개발 과정에 맞게 staging 같은 대체 설정을 추가로 정의하고 이름을 붙일 수 있습니다. 명령줄의 --configuration 플래그에 이름을 전달하면 대체 설정을 선택할 수 있습니다.

예를 들어 프로덕션 빌드(ng build --configuration production)에서만 최적화를 활성화하려면 다음과 같이 설정합니다.

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "optimization": false
          },
          "configurations": {
            "production": {
              "optimization": true
            }
          }
        }
      }
    }
  }
}

쉼표로 구분한 목록으로 둘 이상의 설정 이름을 전달할 수도 있습니다. 예를 들어 staging과 french 빌드 설정을 모두 적용하려면 ng build --configuration staging,french 명령어를 사용합니다. 이 경우 명령어는 지정한 설정을 왼쪽에서 오른쪽 순서로 해석합니다. 여러 설정이 같은 항목을 변경하면 마지막으로 설정한 값이 최종값이 됩니다. 이 예제에서 staging과 french가 모두 출력 경로를 지정한다면 french의 값을 사용합니다.

추가 빌드 및 테스트 옵션

기본 빌드나 특정 대상을 위한 빌드에서 설정할 수 있는 옵션은 일반적으로 ng build와 ng test 명령어의 옵션에 대응합니다. 각 옵션과 사용 가능한 값의 자세한 내용은 Angular CLI 레퍼런스를 참고하세요.

옵션 프로퍼티 설명
assets 애플리케이션과 함께 제공할 정적 리소스의 경로가 포함된 객체입니다. 기본 경로는 프로젝트의 public 디렉터리를 가리킵니다. 자세한 내용은 정적 리소스 설정 섹션을 참고하세요.
styles 프로젝트의 전역 컨텍스트에 추가할 CSS 파일 배열입니다. Angular CLI는 CSS 임포트와 주요 CSS 전처리기를 모두 지원합니다. 자세한 내용은 스타일 및 스크립트 설정 섹션을 참고하세요.
stylePreprocessorOptions 스타일 전처리기에 전달할 옵션과 값의 쌍이 포함된 객체입니다. 자세한 내용은 스타일 및 스크립트 설정 섹션을 참고하세요.
inlineStyleLanguage 애플리케이션의 컴포넌트 인라인 스타일에 사용할 스타일시트 언어입니다. css, less, sass, scss를 사용할 수 있으며 기본값은 css입니다.
scripts 애플리케이션에 추가할 JavaScript 파일이 포함된 객체입니다. 스크립트는 index.html의 <script> 태그에 추가한 것과 동일하게 로드됩니다. 자세한 내용은 스타일 및 스크립트 설정 섹션을 참고하세요.
budgets 애플리케이션 전체 또는 일부에 대한 기본 크기 예산 유형과 임계값입니다. 출력 크기가 임계값에 도달하거나 초과할 때 경고 또는 오류를 보고하도록 빌더를 설정할 수 있습니다. 크기 예산 설정하기를 참고하세요.
fileReplacements 파일과 컴파일 시점에 이를 대체할 파일이 포함된 객체입니다. 자세한 내용은 대상별 파일 대체 설정하기를 참고하세요.
index 애플리케이션을 로드하는 기본 HTML 문서입니다. 자세한 내용은 인덱스 설정을 참고하세요.
security 보안 기능을 설정하는 객체입니다. 자세한 내용은 보안 설정 섹션을 참고하세요.

추가 개발 서버 옵션

개발 서버는 자체 옵션을 제공하며, 일반적으로 ng serve 명령어에서 사용할 수 있는 옵션에 대응합니다.

옵션 프로퍼티 설명
allowedHosts 개발 서버가 응답할 호스트의 배열입니다. 이 옵션은 같은 이름의 Vite 옵션을 설정합니다. 자세한 내용은 Vite 문서를 참고하세요.

복합 설정값

assets, index, outputPath, styles, scripts 옵션은 단순한 경로 문자열이나 특정 필드를 가진 객체를 값으로 사용할 수 있습니다. sourceMap과 optimization 옵션은 단순한 불리언 값으로 설정할 수 있으며, 설정 파일에서 복합 값을 지정할 수도 있습니다.

다음 섹션에서는 각 경우에 이러한 복합 값을 사용하는 방법을 자세히 설명합니다.

정적 리소스 설정

각 build 대상 설정에는 프로젝트를 빌드할 때 그대로 복사할 파일이나 폴더를 나열하는 assets 배열을 포함할 수 있습니다. 기본적으로 public/ 디렉터리의 내용이 복사됩니다.

리소스를 제외하려면 정적 리소스 설정에서 해당 항목을 제거하세요.

복사할 정적 리소스를 워크스페이스 루트 기준의 단순 상대 경로 대신 객체로 지정하면 더 세부적으로 설정할 수 있습니다. 리소스 지정 객체에는 다음 필드를 사용할 수 있습니다.

필드 설명
glob input을 기본 디렉터리로 사용하는 node-glob 패턴입니다.
input 워크스페이스 루트 기준 상대 경로입니다.
output outDir 기준 상대 경로입니다. 보안상의 이유로 Angular CLI는 프로젝트 출력 경로 바깥에 파일을 기록하지 않습니다.
ignore 제외할 glob 패턴의 목록입니다.
followSymlinks glob 패턴이 심볼릭 링크 디렉터리를 따라가도록 허용합니다. 이를 통해 심볼릭 링크가 가리키는 하위 디렉터리를 검색할 수 있습니다. 기본값은 false입니다.

예를 들어 다음 리소스 객체는 src/assets/의 내용을 /assets/로, src/favicon.ico를 출력 루트로 복사합니다.

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "assets": [
              {
                "glob": "**/*",
                "input": "src/assets/",
                "output": "/assets/"
              },
              {
                "glob": "favicon.ico",
                "input": "src/",
                "output": "/"
              }
            ]
          }
        }
      }
    }
  }
}

다음 예제는 ignore 필드를 사용하여 정적 리소스 디렉터리의 특정 파일이 빌드 결과에 복사되지 않도록 합니다.

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "assets": [
              {
                "glob": "**/*",
                "input": "src/assets/",
                "ignore": ["**/*.svg"],
                "output": "/assets/"
              }
            ]
          }
        }
      }
    }
  }
}

스타일 및 스크립트 설정

styles와 scripts 옵션 배열의 항목은 단순한 경로 문자열이나 추가 진입점 파일을 가리키는 객체일 수 있습니다. 해당 빌더는 빌드 중에 파일과 그 의존성을 별도의 번들로 로드합니다. 설정 객체를 사용하면 bundleName 필드로 진입점의 번들 이름을 지정할 수 있습니다.

기본적으로 번들은 자동 삽입되지만 inject를 false로 설정하여 삽입하지 않도록 할 수 있습니다. 예를 들어 다음 객체 값은 스타일과 스크립트가 포함된 번들을 생성하고 이름을 지정하되 자동으로 삽입하지 않습니다.

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "styles": [
              {
                "input": "src/external-module/styles.scss",
                "inject": false,
                "bundleName": "external-module"
              }
            ],
            "scripts": [
              {
                "input": "src/external-module/main.js",
                "inject": false,
                "bundleName": "external-module"
              }
            ]
          }
        }
      }
    }
  }
}

스타일 전처리기 옵션

Sass에서는 컴포넌트 스타일과 전역 스타일 모두에 includePaths 기능을 사용할 수 있습니다. 이를 통해 임포트 시 검색할 기본 경로를 추가할 수 있습니다.

경로를 추가하려면 stylePreprocessorOptions 옵션을 사용하세요.

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "stylePreprocessorOptions": {
              "includePaths": ["src/style-paths"]
            }
          }
        }
      }
    }
  }
}

src/style-paths/_variables.scss 같은 해당 디렉터리의 파일은 프로젝트 어디에서든 상대 경로 없이 임포트할 수 있습니다.

src/app/app.scss

// A relative path works
@import '../style-paths/variables';

// But now this works as well
@import 'variables';

HELPFUL: 기본 @angular/build:unit-test 빌더에는 styles나 scripts 옵션이 없습니다. 이 빌더는 buildTarget 옵션으로 지정한 빌드 대상에서 styles와 stylePreprocessorOptions를 상속하지만, scripts는 상속하지 않습니다. 단위 테스트 전에 스크립트를 실행하려면 test 대상의 setupFiles 옵션에 추가하세요. 프로젝트에서 @angular/build:karma 빌더를 사용한다면 단위 테스트에 필요한 스타일이나 스크립트를 test 대상에 추가하세요. 애플리케이션에서 런타임 전역 라이브러리 사용하기도 참고하세요.

최적화 설정

optimization 옵션은 불리언 값이나 더 세밀한 설정을 위한 객체일 수 있습니다. 이 옵션은 다음과 같은 빌드 출력 최적화를 활성화합니다.

  • 스크립트와 스타일 압축
  • 트리 셰이킹
  • 사용하지 않는 코드 제거
  • 중요 CSS 인라인 삽입
  • 글꼴 인라인 삽입

여러 옵션으로 애플리케이션 최적화를 세밀하게 조정할 수 있습니다.

옵션 설명 값의 타입 기본값
scripts 스크립트 출력의 최적화를 활성화합니다. boolean true
styles 스타일 출력의 최적화를 활성화합니다. boolean | 스타일 최적화 옵션 true
fonts 글꼴 최적화를 활성화합니다. 인터넷 연결이 필요합니다. boolean | 글꼴 최적화 옵션 true

스타일 최적화 옵션

옵션 설명 값의 타입 기본값
minify 불필요한 공백과 주석을 제거하고 식별자를 병합하며 값을 최소화하여 CSS 정의를 압축합니다. boolean true
inlineCritical 중요한 CSS 정의를 추출하여 인라인으로 삽입함으로써 First Contentful Paint를 개선합니다. boolean true
removeSpecialComments 전역 CSS에서 @license 또는 @preserve를 포함하거나 //! 또는 /*!로 시작하는 주석을 제거합니다. boolean true

글꼴 최적화 옵션

옵션 설명 값의 타입 기본값
inline 외부 Google Fonts와 Adobe Fonts의 CSS 정의를 애플리케이션의 HTML 인덱스 파일에 인라인으로 삽입하여 렌더링 차단 요청을 줄입니다. 인터넷 연결이 필요합니다. boolean true

다음과 같은 값을 지정하여 각 항목의 최적화를 개별적으로 적용할 수 있습니다.

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "optimization": {
              "scripts": true,
              "styles": {
                "minify": true,
                "inlineCritical": true
              },
              "fonts": true
            }
          }
        }
      }
    }
  }
}

소스맵 설정

sourceMap 빌더 옵션은 불리언 값이나 애플리케이션의 소스맵을 더 세밀하게 제어하기 위한 객체일 수 있습니다.

옵션 설명 값의 타입 기본값
scripts 모든 스크립트의 소스맵을 출력합니다. boolean true
styles 모든 스타일의 소스맵을 출력합니다. boolean true
vendor 외부 패키지의 소스맵을 해석합니다. boolean false
hidden 출력 JavaScript에서 소스맵 링크를 생략합니다. boolean false
sourcesContent 소스맵에 포함되는 파일의 원본 소스 코드를 출력합니다. boolean true

다음 예제는 하나 이상의 값을 켜거나 꺼서 소스맵 출력을 설정하는 방법을 보여줍니다.

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "sourceMap": {
              "scripts": true,
              "styles": false,
              "hidden": true,
              "vendor": true
            }
          }
        }
      }
    }
  }
}

HELPFUL: 숨겨진 소스맵을 사용하면 번들에서 소스맵을 참조하지 않습니다. 브라우저 개발자 도구에 표시하지 않고 오류 보고 도구에서 스택 트레이스를 매핑하는 데만 소스맵을 사용하려는 경우에 유용합니다. hidden은 출력 번들에 소스맵 링크가 포함되지 않도록 할 뿐입니다. 배포 과정에서도 생성한 소스맵을 프로덕션에서 제공하지 않도록 해야 합니다. 그렇지 않으면 정보가 여전히 유출됩니다.

원본 소스 코드가 없는 소스맵

원본 소스 코드를 포함하는 sourcesContent 필드 없이 소스맵을 생성할 수 있습니다. 이를 통해 소스 코드가 노출되지 않도록 보호하면서 프로덕션에 소스맵을 배포하여 원본 소스 이름을 사용한 더 나은 오류 보고를 제공할 수 있습니다.

소스맵에서 원본 소스 코드를 제외하려면 sourcesContent 옵션을 false로 설정하세요.

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "sourceMap": {
              "scripts": true,
              "styles": true,
              "sourcesContent": false
            }
          }
        }
      }
    }
  }
}

인덱스 설정

애플리케이션의 HTML 인덱스 생성을 설정합니다.

index 옵션은 문자열이나 더 세밀한 설정을 위한 객체일 수 있습니다. HTML 인덱스 파일을 생성하지 않으려면 false로 설정하세요.

문자열 값을 지정하면 해당 경로의 파일 이름을 생성할 파일 이름으로 사용하며, 애플리케이션에 설정된 출력 경로의 루트에 파일을 생성합니다.

인덱스 옵션

옵션 설명 값의 타입 기본값
input 애플리케이션의 HTML 인덱스를 생성할 때 사용할 파일 경로입니다. string 없음(필수)
output 생성된 애플리케이션 HTML 인덱스 파일의 출력 경로입니다. 지정한 전체 경로를 사용하며 애플리케이션에 설정된 출력 경로를 기준으로 한 상대 경로로 간주합니다. string index.html
preloadInitial 애플리케이션의 초기 파일과 리소스에 대한 preload, modulepreload, preconnect 링크 엘리먼트를 생성합니다. boolean 서비스 워커를 활성화하면 false, 그 외에는 true

보안 설정

security 옵션은 개별 보안 기능을 활성화하는 객체입니다.

옵션 설명
autoCsp true로 설정하면 해시 기반 콘텐츠 보안 정책을 생성합니다. {"unsafeEval": true}로 설정하면 eval도 허용합니다. autoCsp로 인라인 스크립트 해시 생성하기를 참고하세요.
allowedHosts 서버 측 애플리케이션에 접근하도록 허용된 호스트 이름입니다. 서버 측 요청 위조(SSRF) 방지하기를 참고하세요.

출력 경로 설정

outputPath 옵션은 base 값으로 사용할 문자열이나 더 세밀한 설정을 위한 객체일 수 있습니다.

여러 옵션으로 애플리케이션의 출력 구조를 세밀하게 조정할 수 있습니다.

옵션 설명 값의 타입 기본값
base 워크스페이스 루트를 기준으로 출력 경로를 지정합니다. string
browser 기본 출력 경로 안에 생성할 브라우저 빌드의 출력 디렉터리 이름입니다. 이 디렉터리는 사용자에게 안전하게 제공할 수 있습니다. string browser
server 기본 출력 경로 안에 생성할 서버 빌드의 출력 디렉터리 이름입니다. string server
media 브라우저 출력 디렉터리 안에 생성할 미디어 파일의 출력 디렉터리 이름입니다. 이러한 미디어 파일은 일반적으로 CSS 파일에서 리소스로 참조합니다. string media