2016-09-17 9 views
1

현재 내 모듈은 상대 경로를 사용하여 가져올 수 있습니다 이 (services는 루트에) :Typescript를 구성하여 내 SystemJS 경로를 "알 수있게"하는 방법은 무엇입니까? 그때 내가 할 수있는, 그 해상도가 응용 프로그램의 루트에서 시작하도록 모듈 경로가 <code>./</code>로 시작하지 않는 한 나는 오히려 SystemJS를 구성 할 것, 그러나</p> <pre><code>import {UserService} from "../../../services/user-service"; </code></pre> <p>:

import {Something} from "./something"; 
,691 :

import {UserService} from "services/user-service"; 

그리고 현재 위치에서 파일을 가져 오려면 '그러나

System.config({ 
    defaultJSExtensions: true, 
    transpiler: false, 
    paths: { 
     "*": "dist/*", 
     "services": "dist/services/*", 
     "models": "dist/models/*", 
     "github:*": "jspm_packages/github/*", 
     "npm:*": "jspm_packages/npm/*" 
    }, 
    // ... 
} 

...

  1. SystemJS.paths 설정의 타이프 인식하게하는 방법을 잘 모르겠어요, 그리고
  2. 나는 돈 :

    나는 SystemJS와 첫 번째 부분을 구성 할 수 있습니다 SystemJS가 "기본적으로 루트에서로드"하도록 구성하는 방법을 알고 있습니다.

답변

0

하나의 솔루션은 SystemJs에서 패키지를 구성하고 typescript에 대한 경로 매핑을 추가하는 것입니다.

당신이 좋아하는 서비스 디렉토리 아래 index.ts 파일을 추가하여이 작업을 수행 할 수 있습니다

export { UserService } from './user-service'; 
export { OrderService } from './order-service'; 
... 

하는 것은 당신의 SystemJs의 설정에 다음을 추가 (참조 : SytemJS config-api를)

SystemJS.config({ 
    ... 
    packages: { 
    "services": { 
     "main": "index.ts" 
    } 
    } 
}); 

이 추가 tsconfig.json에 (참조 : Typescript module resolution를)

{ 
    "compilerOptions": { 
    { 
    ... 
    "moduleResolution": "Node", 
    "baseUrl": ".", 
    "paths": { 
     "services": [ "services" ] 
    } 
    } 
} 

을 지금 당신은 할 수 있습니다 이제 다음과 같은 파일을 가져 오십시오.

import { UserService } from 'services'; 

이렇게하면 Visual Studio에서 인텔리 센스를 제공하고 모듈을 브라우저에로드 할 수 있습니다.