前言
最近在学习ts搭建项目,碰到了一些问题,其中有一个涉及到模块解析的,tsconfig.json中的属性noduleResolution就是设置相关策略的,本节来了解一下该属性。
moduleResolution
模块解析策略顾名思义就是找到然后加载模块的方法,在ts中用moduleResolution来设置模块解析策略,它可以规定如何去定位加载模块文件,它有两个有效值:
- classic:经典模式,经典模式首先会将模块名解析为对当前文件的相对路径,根据相对路径去定位然后加载文件。当我们设置为经典模式时,引入模块文件,文件的路径就需要使用相对路径。假设文件目录如下:
我们在main.ts引入utils中某个方法就要用相对路径。
import { parseTime } from './utils/index';
- node:node模式,node会用模块解析器去查找加载路径,这时候我们只需要写出模块名就可以,模块解析器会根据文件查找规则去解析模块名,然后引入我们想要的文件:
// 直接写模块路径
import { parseTime } from 'utils/index';
注意node模式下需要指定baseUrl的值。
除了classic与node两个值还有特殊值,跟有效值相对应:
- node-never:如果不使用node模式加载文件就会抛出一个编译错误。
- classic-never:同理如果不使用classic也会抛出错误。 ts1.8版本之前moduleResolution的默认值是classic,在此之后的版本都是node,根据项目需要我们可以去更改属性值。
总结
moduleResolution用来设定模块解析策略,两个有效值classic与node,classic适用于小项目,不需要特别的配置;node适用于复杂项目,但是需要设置baseUrl的值。