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'