xzz2021
发布于 2024-04-08 / 2 阅读
0
0

nestjs自动导入module模块

nestjs自动导入module模块

在开发项目过程中,一般都是手动导入模块,但在大型项目中,就显得不太优雅,且本人记忆力不好,容易遗漏导入! 所以动手写个自动导入功能!
1 . 主要原理,使用node自带的require.context读取目录下相应文件, typescript下需要安装类型依赖@types/webpack-env

// require.context需要类型  "@types/webpack-env": "^1.18.4",
const files = require.context('./', true, /module\.ts$/)
// 排除目录
const excludeFiles = ["./app.module.ts"]
function importAllModule(files){
    const moduleObj={};
    const requiredModules = files['keys']().filter(item => !excludeFiles.includes(item))
    for(let item of requiredModules){
       Object.assign(moduleObj, files(item))
    }
    return moduleObj
}

export default importAllModule(files)

2 . 入口的app模块进行导入

import allModules from './autoImportModule'
imports: [
    ConfigModule.forRoot({
      envFilePath: ['.env', '.env.rc.' + process.env.NODE_ENV],
      isGlobal: true,
    }),
  ].concat(Object.values(allModules))

3 . 完结, 就是这么简单! 后期悠闲时再封装成一个库,发布到npmjs上!


评论