Skip to content

baseUrl与paths

这两个我们一般在打包器中常见,都是在设置路径别名的时候进行处理。比如:

json
baseUrl:"./",
"paths": {
  "@/*": ["src/*"]
}

baseUrl:设置解析非相对路径模块的基础地址,默认是当前目录,

pahts:路径映射

也就是说,在我们的纯node环境的代码中,如果像下面这样的配置modulemoduleResolution

typescript
"module": "NodeNext"
"moduleResolution": "NodeNext"

那我们的导入是肯定要加上后缀的,不然要报错,但是我们可以使用baseUrl+paths来欺骗一下自己

shell
"module": "NodeNext",
"moduleResolution": "NodeNext",
"baseUrl": "./",
"paths":{
  "@/*":["src/*.js"]
}

我们在引入的时候,只需要像这样写:

typescript
import { show } from "@/myModule";

同样也不会报错。

甚至于,你可以写成下面这样:

shell
"module": "NodeNext",
"moduleResolution": "NodeNext", 
"baseUrl": "./",
"paths":{
  "*":["src/*.js"]
}

意味着,ts将会从当前目录进行查找,并且后续目录会自动映射为src/*.js,这样如果我们在界面上写成这样

typescript
import {view} from "myModule"
import axios from "axios";

注意这样写只是保证TypeScript代码不报错而已,当编译成js文件之后,"@/myModule"还是会原封不动的被转译。 TypeScript并不会处理模块说明符(也就是from "xxxx")里面的内容 如果想处理别名问题,需要结合paths和打包工具一起进行处理