koa typescript module-alias 根据环境变量动态修改别名

611 阅读1分钟

koa typescript 根据环境变量动态修改别名

使用module-alias添加别名有两种方式:

  • 在package.json进行配置
  • 使用API进行动态添加别名

最常用的是在package.json中配置,在开发环境下正常,但部署的时候会报错Error: Cannot find module xxxxx ,因为@的指向不对了。

"_moduleAliases": {
  "@": "src"
},

我项目打包后的代码是放在dist中,这时候需要改为:

"_moduleAliases": {
  "@": "dist"
},

所以,需要根据环境变量动态修改别名的指向。

一、安装依赖

npm install module-alias --save

二、动态添加别名

由于功能比较独立,新建一个文件来做这事情,

如:我新建文件configAlias.ts 放在 src/configAlias.ts

import path from 'path'
import moduleAlias from 'module-alias'

(function configAlias() {
    const NODE_ENV = process.env.NODE_ENV || 'test'
    // 根据环境变量选择别名指向地址
    const aliasPath = NODE_ENV === 'dev' ? path.resolve(__dirname) : path.resolve(__dirname, '../dist/')
    // 配置别名
    moduleAlias.addAlias('@', aliasPath)
})()

三、tsconfig.json配置

"compilerOptions": {
    "paths": {
      "@/*": ["src/*"]
    },  
}

四、在项目启动文件导入

app.ts

// 注意:一定要在使用@别名之前,先配置,否则无法使用,所以放在app.ts文件最顶部最合适

// 1.引入module-alias/register
import 'module-alias/register'

// 2.引入
import './configAlias'