第一种方式 alias.config.ts
- 安装 module-alias
pnpm i --save module-alias
- alias.config.ts
import path from "path";
import alias from "module-alias";
alias.addAliases({
"@root": path.resolve(__dirname),
"@src": path.resolve(__dirname, "./src"),
"@configs": path.resolve(__dirname, "./src/configs"),
"@models": path.resolve(__dirname, "./src/models"),
"@routes": path.resolve(__dirname, "./src/routes"),
"@controllers": path.resolve(__dirname, "./src/controllers"),
"@services": path.resolve(__dirname, "./src/services"),
"@middleware": path.resolve(__dirname, "./src/middleware"),
"@utils": path.resolve(__dirname, "./src/utils"),
});
- tsconfig.json 配置
注意: tsconfig.json 内配置的别名要和 alias.config.ts 的一致
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": true,
"noImplicitAny": false,
"esModuleInterop": true,
"outDir": "./dist",
"baseUrl": ".",
"paths": {
"@root": ["."],
"@src": ["src"],
"@utils": ["src/utils"],
"@configs": ["src/configs"],
"@routes": ["src/routes"],
"@models": ["src/models"],
"@services": ["src/services"],
"@controllers": ["src/controllers"],
"@middlewares": ["src/middlewares"]
}
},
"include": ["app.ts", "src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts", "dist"]
}
- 主入口内引入 alias.config.ts
// app.ts
import "./alias.config";
import { getData } from "@utils";
import { setConfig } from "@configs";
getData();
setConfig();
第二种方式 package.json
- package.json
{
"_moduleAliases": {
"@root": ".",
"@models": "src/models",
"@routes": "src/routes",
"@utils": "src/utils",
"@configs": "src/configs"
}
}
- 使用
import "module-alias/register";
import { getData } from "@utils";
import { setConfig } from "@config";
getData();
setConfig();