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上!