@angular指向正确的node_module

时间:2018-03-27 20:39:29

标签: angular

我正在查看各种角度5文件,试图弄清楚“@angular”如何指向正确的node_modules文件夹,然后导入该文件夹(即路由器)中的正确子模块(如果已导入)。似乎没有明确定义@angular“app”名称的配置路径的文件,如果你愿意的话。

我正在寻找这样的东西:“@angugular”:“。/ node_module / @angular”,但还没有发现它。

我在Mac OS上使用Angular 5,如果这意味着什么。

由于

1 个答案:

答案 0 :(得分:0)

这不是Angular特有的。它是一个Typescript配置。

如果您查看tsconfig.jsontsconfig.app.json,如果您正在使用CLI),则会看到moduleResolution属性:

"moduleResolution": "node",

'节点' mode意味着Typescript编译器将尝试像Node.JS那样解析模块,这意味着node_modules将永远是模块解析的根。 node_modules中的任何内容都可以通过这种方式通过绝对路径导入 - 假设包裹'打字稿定义文件位于其根路径中,这意味着它只能通过引用文件夹名称来导入。关于here.

,有一些很好的文档

@angular在子文件夹中以模块化方式生成其Typescript定义文件,因此您需要引用该文件的文件夹路径(例如@angular/core)。

Typescript编译器用于查找模块或导出的另一个tsconfig.json属性是baseUrl属性。在这里设置一些东西将允许编译器将该路径视为绝对路径(例如:在Angular应用程序中将baseUrl设置为"src"将允许您绝对地从中导入内容,因此import { Thing } from ../../../services/thing可以成为import { Thing } from app/services/thing。)

您还可以向编译器传递一个paths对象,该对象将相对于baseUrl向模块添加其他路径映射。