2016-09-17 3 views
1

В настоящее время я импортировать мои модули, используя относительные пути:Как настроить Typcript, чтобы он «знал о моих путях SystemJS?

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

Однако я предпочел бы настроить SystemJS так, что разрешение начинается в корневом каталоге приложения, если путь модуля начинается с ./, то я могу сделать это (services находится в корне):

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

И если я хочу, чтобы импортировать файл из текущего местоположения:

import {Something} from "./something"; 

я могу настроить первую часть с SystemJS:

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. Я не» t знать, как настроить SystemJS, чтобы «загружать вещи из корня по умолчанию».

ответ

0

Одним из решений является настройка пакета в SystemJs и добавление сопоставлений пути для машинописного текста.

Вы можете сделать это, добавив 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'; 

Это обеспечит intellisense в Visual Studio и позволит загружать модули в браузере.