Skip to content

Veloma-Timer/v-require-all

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

v-require-all

用一个简单的方法来导入指定的文件(因NestJs导入模块而生).

在NestJs中使用

文件目录

├── assets
├── main.ts
├── modules
   ├── app
      ├── app.controller.ts
      ├── app.module.ts
      └── app.service.ts
   ├── config
      ├── config.controller.ts
      ├── config.module.ts
      └── config.service.ts
   └── user
       ├── user.controller.ts
       ├── user.module.ts
       └── user.service.ts
├── types
└── utils
    ├── requreAll.ts
    └── utils.ts

需求

将modules中所有xx.module.ts导入

实现

app.module.ts

import { AppController } from './app.controller';
import { AppService } from './app.service';
import { requireAllInNest, Module } from "v-require-all";
import { join } from 'path';


@Module({
  imports: requireAllInNest({ dirname: join(__dirname, '..'), currentFile: __filename }, 'Module'),
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

config.module.ts

import { Module } from '@nestjs/common';
import { ConfigController } from './config.controller';
import { ConfigService } from './config.service';
import { defineDecorator } from "v-require-all";

@defineDecorator(['Module'])
@Module({
  imports: [],
  controllers: [ConfigController],
  providers: [ConfigService],
})
export class ConfigModule {}

user.config.ts

import { Module } from '@nestjs/common';
import { UserController } from './user.controller';
import { UserService } from './user.service';
import { defineDecorator } from "v-require-all";


@defineDecorator(['Module'])
@Module({
  imports: [],
  controllers: [UserController],
  providers: [UserService],
})
export class UserModule {}

说明

这个方法其实不只能导入指定目录的module, 也能导入controller或者service, 并且app.moudule中的@Module被重写后传入的参数也可以更灵活, 该方法也可不在NestJs中使用.

NestJs以外使用

import { requireAll } from 'v-require-all';

requireAll({ dirname: __dirname }).then(modules => {
  console.log(modules);
}).catch(error => {
  console.log(error);
});

执行结果

Map(3) {
  '/Users/zhangxuefei/Desktop/ra/package/a.ts' => { a: 'veloma', default: [Function: sum] },
  '/Users/zhangxuefei/Desktop/ra/package/b.ts' => { b: 'timer', default: [Function: sayHello] },
  '/Users/zhangxuefei/Desktop/ra/package/children/c.ts' => {
    name: '山竹',
    defineDecorator: [Function: defineDecorator],
    Person: [Function: Person],
    default: [Function: sayName]
  }
}

掘金文章(详细讲解)

https://juejin.cn/post/6976631747295313951/

联系方式

wx: __veloma__
emial: 981931727@qq.com

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors