2017-10-09 2 views
0

프런트 엔드로 Angular4를 사용하고 백엔드로 Typescript로 작성된 NodeJS를 사용하는 프로젝트에서 작업하고 있습니다.Typescript 프로젝트에서 공유 소스를 사용하는 가장 좋은 방법은 무엇입니까?

저는 양쪽면에서 소스를 사용하고 싶지만 (DTO와 같은 경우), 최선의 방법으로 처리하는 방법을 모르겠습니다. 외부 종속성을 사용합니다.

세 개의 폴더 (client /, server/및 common /)가 있습니다.

  • 공통 폴더 (공통 소스 포함)에 자체 package.json이 있어야합니까?
  • 컴파일 된 .js 파일은 어디에 있습니까? 공통/dest /? 그렇다면 앱을 실행할 때 가져 오기가 제대로 작동합니까 (클라이언트 + 서버)?

내 각형 응용 프로그램에 대한 내 노드 타이프 스크립트 소스를 사용하여 그들을 컴파일하고 앵글 -CHI (npm 시작)를 사용합니다.

답변

1

이 문제를 해결하는 가장 좋은 방법은 패키지와 같은 공통 코드를 처리하는 것입니다 (사용자가 문자 그대로 버전 NPD 피드에서 버전을 지정할 수도 있습니다).

NPM 패키지를 만들지 않아도 대부분의 단계를 따라 쉽게 사용법을 만들 수 있습니다.

  1. 은 정의와 공통 코드는 UMD 모듈을 사용하여 (--declaration)
  2. 컴파일에 전환을 컴파일, 그래서 같은 모듈은 .js.d.ts 파일 당신이 필요로하는 곳으로 노드에 브라우저
  3. 복사에서 작동합니다 그들을 소비하십시오

"전체 패키지"로 이동하는 경우 패키지 할 배포 폴더로 파일을 복사하려면 세 번째 단계를 변경하십시오.

일반적인 아이디어는 TypeScript 파일 집합 하나를 "진실성 원본"으로 유지하는 것입니다. 코드를 복사 할 때마다 JavaScript 및 형식 정의를 가져 오는 것이 좋습니다.

0

는 "./index.ts"

package.json

{ 
    //... 
    "main": "./build/index.js", 
    "typings": "./build/index" 
} 

tsconfig.json

{ 
    "compilerOptions": { 
     //... 
     "declaration": true, 
     "sourceMap": true, 
     "outDir": "./build" 
    }, 
    "exclude": [ 
     "node_modules", 
     "build" 
    ] 
} 

GitHub의에 코드를 밀어에서 라이브러리를 내보낼 패키지를 확인하고 npm을 사용하여 설치하십시오. npm install github:[username]/[repository]#[master/tag]

예 : https://github.com/tfso/njs-tfso-repository은 typescript 라이브러리의 npm 패키지입니다. release 태그에는 transpiled javascript가 들어 있습니다 (github 소스에는 javascript가 포함되지 않음). 다음과 같이 입력하여 설치할 수 있습니다. npm install tfso/njs-tfso-repository#1.2.98

관련 문제