Nodejs(Koa)中使用目录别名alias

书写多级相对路径的困扰

在Nodejs或Koa项目中,想引入自定义模块通常是这样写的:

const xxx = require('../xx/xx')

如果模块目录结构比较深,甚至可能出现以下代码:

const xxx =require('../../../xx/xx')

如果 ../ 出现次数多了,会让代码可读性变差,万一哪天手抖少写了一个 ../ 也不容易第一时间被发现。

这种情况也会出现在前端项目中,但是由于前端架构基本都采用类似 webpack 或 rollup 编译,可以通过修改配置,添加 alias(目录别名) 来解决。

例如 Vue、React、Taro架构都有对应的 alias 配置方法,使用目录别名 @xxx 后,那么引入模块时,路径通常可以写成:

import xxx from '@xxx/xx'

目录别名(alias) 的本质是把 相对路径 转换成 绝对路径,所以无论当前所处哪个目录级别,都可以通过 @xxx 来找到对应的目标文件。

Nodejs(Koa)中变相实现alias

首先说一下,后端项目本身没有编译这个环节,所以 webpack 配置 alias 那一套方式无法应用在 Nodejs、Koa 中。

但是在 NPM 中,已经有很多人贡献了自己的代码模块,变相实现了 alias :

  1. require-alias
  2. module-alias
  3. link-module-alias
  4. alias-hq
  5. ts-node
  6. tsconfig-paths