2017-01-11 2 views
0

Есть ли способ получить импорт импортных операций, если ваш node_modules не находится в прямом дереве?TypeScript - node_modules в непредвиденном месте

Как я могу сделать Typcript не жаловаться при импорте чего-то вроде rxjs от external/node_modules.

Пример:

дерево

|-- external 
| `-- package.json 
|-- index.ts 
`-- tsconfig.json 

кошки tsconfig.json

{ 
    "compilerOptions": { 
     "module": "amd", 
     "target": "es5", 
     "sourceMap": true, 
     "removeComments": true, 
     "allowJs": false, 
     "pretty": true, 
     "experimentalDecorators": true, 
     "moduleResolution": "node", 
     "emitDecoratorMetadata": true, 
     "lib": [ "es2015", "dom" ] 
    } 
} 

кошки внешний/package.json

{ 
    "name": "external", 
    "version": "1.0.0", 
    "main": "index.js", 
    "license": "MIT", 
    "dependencies": { 
     "rxjs": "^5.0.3" 
    } 
} 

кошка index.ts

import { Observable } from 'rxjs/Rx'; 
Observable 

кд внешний

пряжи установки

yarn add v0.18.1 
[1/4] Resolving packages... 
[2/4] Fetching packages... 
[3/4] Linking dependencies... 
[4/4] Building fresh packages... 
success Saved lockfile. 
success Saved 2 new dependencies. 
├─ [email protected] 
└─ [email protected] 
✨ Done in 1.39s. 

TSC -v

Version 2.1.4

TSC

1 import { Observable } from 'rxjs/Rx'; 
          ~~~~~~~~~ 

../index.ts(1,28): error TS2307: Cannot find module 'rxjs/Rx'. 

ответ

1

Вы можете использовать paths mapping в tsconfig.json:

"compilerOptions": { 
    .... 
    "baseUrl": ".", // This must be specified if "paths" is. 
    "paths": { 
     "rxjs/Rx": ["external/node_modules/rxjs/Rx"] 
    } 
    } 

Вы должны добавить paths отображения для каждого модуля импортируемого из нестандартного места.

+0

Хорошо, это имеет смысл! Благодаря! – Clem

Смежные вопросы