anchor.diff:  .l-main-section
   :marked
     ## *devDependencies*
  +  `package.json`의 *devDependencies*에 목록화된 패키지들은 여러분이 어플리케이션을 개발하는데 도움을 줍니다.
  +  프로덕션 어플리케이션에 이 패키지들을 포함하게 되더라도 이상은 없지만, 굳이 포함할 필요는 없습니다. 
  +
     The packages listed in the *devDependencies* section of the `package.json` help you develop the application.
     You don't have to deploy them with the production application although there is no harm in doing so.
   
     ***[concurrently](https://www.npmjs.com/package/concurrently)*** - 
  +  OS/X, 윈도우즈, 그리고 리눅스 운영체제 상에서 여러개의 npm 명령어를 작동시키기 위한 유틸리티.
  +
     A utility to run multiple *npm* commands concurrently on OS/X, Windows, and Linux operating systems.
     
     ***[lite-server](https://www.npmjs.com/package/lite-server)*** - 
  +  [John Papa](http://johnpapa.net/)가 작성한 가볍고 정적인 파일 서버,
  +  라우팅을 사용하는 Angular 앱을 훌륭하게 지원합니다. 
  +
     A light-weight, static file server, by [John Papa](http://johnpapa.net/) 
     with excellent support for Angular apps that use routing.
  -  
  +
     ***[typescript](https://www.npmjs.com/package/typescript)*** - 
  +  *tsc* 컴파일러를 포함한 TypeScript 언어 서버
  +
     the TypeScript language server, including the *tsc* TypeScript compiler.
     
  -  ***@types/\**** - TypeScript definition files.
  +  ***@types/\**** 
  +  - TypeScript 정의 파일들.
  +  자세한 사항은 [TypeScript 설정](typescript-configuration.html#typings)에서 살펴보세요.
  +
  +  - TypeScript definition files.
     Learn more about it in the [TypeScript Configuration](typescript-configuration.html#typings) chapter.
   
   .l-main-section
   a(id="why-peer-dependencies")
   :marked
  +  ## 왜 *peerDependencies*?
  +
     ## Why *peerDependencies*?
     
  +  바른시작 섹션에서 다룬 `packae.json`에는 *peerDependencies*가 없었습니다.
  +  하지만 Angular의 package.json 파일에는 여러분 어플리케이션에 중요한 *peerDependencies*가 있습니다.
  +
     There isn't a *peerDependencies* section in the QuickStart `package.json`. 
     But Angular has a *peerDependencies* section in 
     *its* package.json, which has important consequences for your application. 
     
  +  이는 왜 [폴리필](#polyfills)의 *의존성* 패키지를 빠른시작의 `package.json`에서 불러왔는지 설명해줍니다.
  +  또한 왜 그 패키지들이 여러분 어플리케이션에 필요한 것인지도 설명해줍니다.
  +
     It explains why you load the [polyfill](#polyfills) *dependency* packages in the QuickStart `package.json`,
     and why you'll need those packages in your own applications.
     
  +  이에대한 설명은 [peer dependencies](https://nodejs.org/en/blog/npm/peer-dependencies/)을 참고하세요.
  +
     An explanation of [peer dependencies](https://nodejs.org/en/blog/npm/peer-dependencies/) follows.
     
  +  패키지들은 다른 패키지에 의존합니다. 예를들면, 여러분의 어플리케이션은 Angular 패키지에 의존합니다.
  +
     Packages depend on other packages. For example, your application depends on the Angular package.
     
  +  두 패키지 "A", "B"가 동시에 또 다른 패키지 "C"에 의존할 수 있습니다.
  +  "A"와 "B"는 모두 "C"를 그들의 *dependencies*로 목록화 할 것입니다.
  +
     Two packages, "A" and "B", could depend on the same third package "C". 
     "A" and "B" might both list "C" among their *dependencies*.
     
  +  만약에 "A"와 "B"가 서로 다른 버젼의 "C" ("C1"과 "C2")를 의존하면 어떨까요? npm 패키지 시스템은 이를 지원합니다.
  +  npm은 "C1"을 "A"를 위해 `node_modules` 폴더에 설치하고, "C2"를 "B"를 위해 `node_modules` 폴더에 설치합니다.
  +  "A"와 "B"는 모두 각각의 "C"의 복사본을 갖게 되고, 서로 간섭하지 않고 작동할 수 있습니다.
  +
     What if "A" and "B" depend on different versions of "C" ("C1" and "C2"). The npm package system supports that. 
     It installs "C1" in the `node_modules` folder for "A" and "C2" in the `node_modules` folder for "B".
     Now "A" and "B" have their own copies of "C" and they run without interferring with one another.
  +
  +  하지만 문제가 있습니다. 패키지 "A"는 "C1"의 존재를 직접 실제로 호출하지 않고도 알아야 할 것입니다.
  +  "A"는 오직 *다른 누군가가 "C1"을 사용할 때* 작동할 수도 있습니다. 어플리케이션의 다른 부분이 "C2"에 의존하면 무너지게 됩니다.
     
     But there is a problem. Package "A" may require the presence of "C1" without actually calling upon it directly.
     "A" may only work if *everyone is using "C1"*. It falls down if any part of the application relies on "C2".
     
  +  해결책은 "A"가 "C1"에 대해 *상호 의존성(peer dependency)*를 선언하는 것입니다.
  +
     The solution is for "A" to declare that "C1" is a *peer dependency*.
     
  +  `dependency`와 `peerDependency`의 차이는 대략 다음과 같습니다:
  +
     The difference between a `dependency` and a `peerDependency` is roughly this:
     
  +  >**dependency**는 이렇게 말합니다. "나는 이것이 직접 *나에게* 사용될 수 있어야 돼"*
  +  >
     >A **dependency** says, "I need this thing directly available to *me*."
  +  >
  +  >**peerDependency**는 이렇게 말합니다. "나를 사용하려면, *당신은* 이것들을 사용할 수 있어야 돼"*
     >
     >A **peerDependency** says, "If you want to use me, you need this thing available to *you*."
      
  +  Angular의 `package.json`파일은 몇몇의 *peerDependency* 패키지를 명시하며,
  +  각각은 특정 버전의 서드파티 패키지에 고정되어 있습니다.
  +
     The Angular `package.json` specifies several *peer dependency* packages, 
     each pinned to a particular version of a third-party package.
   
  +  ### Anuglar의 *peerDependencies*는 직접 설치해야만 합니다.
  +
     ### We must install Angular's *peerDependencies* ourselves.
     
  +  *npm*은 `dependencies` 목록에서 *여러분의* 패키지를 설치할 떄,
  +  *그 패키지들*의 `dependencies`에 있는 패키지들 또한 설치합니다.
  +  그 과정은 재귀적입니다.
  +
     When *npm* installs packages listed in *your* `dependencies` section,
     it also installs the packages listed within *their* packages `dependencies` sections.
     The process is recursive.
     
  +  하지만, 버전 3에서는 *npm*은 *peerDependencies* 목록의 패키지를 설치하지 *않습니다*.
  +
     However, as of version 3, *npm* does *not* install packages listed in *peerDependencies* sections.
  -  
  +
  +  이는 여러분의 어플리케이션이 Angular를 설치할 때, 
  +  ***npm*은 자동으로 Angular의 *peerDependencies* 목록의 패키지들을 설치하지 않는다**는 것입니다.
  +
     This means that when your application installs Angular, ***npm* doesn't automatically install
     the packages listed in Angular's *peerDependencies* section**.
     
  +  다행이도 *npm*은 경고를 통해 (a) *상호 의존성(peer dependencies)*이 깨질때, 또는 (b)
  +  어플리케이션이나 다른 의존성이 다른 버전의 *상호 의존성*을 설치할 때 알려줍니다.
  +
     Fortunately, *npm* issues a warning (a) When any *peer dependencies* are missing, or (b)
     When the application or any of its other dependencies
     installs a different version of a *peer dependency*. 
  +
  +  이 경고는 버전 불일치로 인한 우연한 실패를 막아줍니다.
  +  여러분에게 패키지와 버전 결정을 할 수 있게 해줄 것입니다.
     
     These warnings guard against accidental failures due to version mismatches.
     They leave you in control of package and version resolution.
     
  +  따라서 *상호 의존성* 패키지를 **여러분의 *devDependencies*에** 목록화 하는 것은 여러분이 해야할 일입니다.
  +
     It is your responsibility to list all *peer dependency* packages **among your own *devDependencies***.
     
   .l-sub-section
     :marked
  +    #### *peerDependencies*의 미래
  +    
       #### The future of *peerDependencies*
       
  +    Angular의 폴리필 의존성은 강한 요구사항을 필요로 합니다. 현재는, 이를 선택적으로 만들 수 있는 방법이 없습니다.
  +
       The Angular polyfill dependencies are hard requirements. Currently, there is no way to make them optional.
       
  +    하지만, npm의 기능 요청 중 "선택적인 peerDependencies"가 있습니다. 이것을 통해 여러분은 이 관계를 더 잘 구상할 수 있습니다.
  +    이 요청이 구현되면, Angular는 *peerDependencies*에서 *optionalPeerDependencies*로 모든 폴리필을 대체할 것입니다.
  +
       However, there is an npm feature request for "optional peerDependencies," which would allow you to model this relationship better. 
       When this feature request is implemented, Angular will switch from *peerDependencies* to *optionalPeerDependencies* for all polyfills.
  
positive.code: 
    *dependencies*은 어플리케이션을 *실행*하는데 필수적입니다.
    *devDependencies*는 어플리케이션을 *개발*하는데만 필요합니다.
    설치 명령어에 `--production` 옵션을 추가함으로써, 프로덕션 설치파일에서 다음과 같이 제외시킬 수 있습니다:
  
    The *dependencies* are essential to *running* the application. 
    The *devDependencies* are only necessary to *develop* the application. 
  
negative.code: 
    ### Feature Packages
    
    ***@angular/core*** - 모든 어플리케이션에 필요한 프레임워크의 핵심적인 런타임 요소.
    데코레이터, `컴포넌트`, `디렉티브`, 의존성 삽입, 그리고 컴포넌트 라이프사이클 후크에 관한 모든 메타데이터를 포함합니다.
    
    ***@angular/core*** - Critical runtime parts of the framework needed by every application. 
    Includes all metadata decorators, `Component`, `Directive`,  dependency injection, and the component lifecycle hooks.
    
    ***@angular/common*** - Angular팀이 제공하는 서비스, 파이프, 그리고 디렉티브에 공통적으로 필요한 것들
  
    ***@angular/common*** - The commonly needed services, pipes, and directives provided by the Angular team.
    
  