TypeScript+nest.js批量加载模块

247 阅读1分钟
  1. 安装require-all

npm i require-all

yarn add require-all

  1. 封装方法

global.utils.ts

 /**
 * 加载指定目录的所有模块
 * @param url src目录的相对路径('/xx')
 * @return any[]
 */
export const requireAll = (url: string): any[] => {
  return Object.values(
    require("require-all")({
      dirname: __dirname + url,
    })
  ).map((item: { default: object } | any) => {
    // 提取默认导出
    return item.default;
  });
};
  1. 批量加载controllers,providers

app.module.ts

import { Module } from "@nestjs/common";
import { requireAll } from "./global.utils";

const services = requireAll("/service");
const controllers = requireAll("/controller");

@Module({
  imports: [],
  controllers: [...controllers],
  providers: [
    ...services,
  ],
})
export class AppModule { }