2017-06-02 68 views
1

我看到这个网页阅读说明的ModuleResulution为打字稿“node_modules”的离子2外进口动态:https://www.typescriptlang.org/docs/handbook/module-resolution.html#node

从我所理解的是,所有这一切我想要导入的文件必须在node_modules目录。有没有办法导入不在这个目录中的文件?

比方说,我有以下目录结构(src/MyApp/):

├── Console 
│ └── Console.ts 
├── Interfaces 
│ └── CredentialsInterface.ts 
└── Service 
    ├── Authentication.ts 
    ├── Router.ts 
    └── Connector.ts 

再比如说在我的src/pages/login/login.ts我用这个来导入Console.ts

import { Console } from '../../MyApp/Console/Console'; 

但我想实现像这个:

import { Console } from '@MyApp/Console/Console'; 

W这里@MyAppsrc/MyApp的别名。

由于潜在的文件/文件夹重定位或稍后重构,我可能想要替换文件的位置,但我不想通过手动检查所有文件来更改“硬编码”路径,并且我知道这是可能的其他工具,如Composer

这是以任何方式可能吗?提前致谢!

+0

视觉环境没有你尝试在tsconfig.json中设置'path'? –

+0

我试过..它没有工作。原因可能是因为它只适用于“经典”模块分辨率,或者我刚刚设置了我的路径错误。即使我的模块分辨率设置为“节点”,这样做还可以吗? –

回答

1

为此,您必须更新几个文件,您可以通过更新tsconfig.json并扩展webpack配置文件来完成。

你需要添加上compilerOptionstsconfig.json

"baseUrl": "./src", 
"paths": { 
    "app/*": [ 
    "app/*" 
    ], 
    "@env": [ 
    "environments/environment" 
    ], 
    "interfaces/*": [ 
    "interfaces/*" 
    ], 
    "providers/*": [ 
    "providers/*" 
    ], 
    "validators/*": [ 
    "validators/*" 
    ] 
} 

我离开一个链接,我没有实现这个简短的文档,并且也使用的angular-cli

Ionic envs and beauty paths