{"library":"nestjs-minio-client","title":"NestJS Minio Client","description":"The `nestjs-minio-client` package provides a robust integration of the Minio S3-compatible object storage client into the NestJS framework. It offers a `MinioModule` for streamlined configuration and registration, supporting both synchronous `register()` and asynchronous `registerAsync()` methods, which is particularly useful for injecting configuration from NestJS's `@nestjs/config` package. An injectable `MinioService` then provides direct access to the underlying Minio JS SDK client instance, allowing developers to interact with Minio's API. The current stable version is 2.2.0, with a consistent release cadence focusing on updates to dependencies, NestJS compatibility, and internal refactoring. It serves as a dedicated wrapper, simplifying Minio usage within NestJS applications and abstracting away direct SDK initialization. It requires NestJS version 9 or later.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install nestjs-minio-client"],"cli":null},"imports":["import { MinioModule } from 'nestjs-minio-client';","import { MinioService } from 'nestjs-minio-client';","MinioModule.register({ /* options */ })","MinioModule.registerAsync({ useFactory: ..., inject: [...] })"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { Module } from '@nestjs/common';\nimport { MinioModule } from 'nestjs-minio-client';\nimport { ConfigModule, ConfigService } from '@nestjs/config';\nimport { MinioClientService } from './minio-client.service'; // Assuming you have a service using MinioService\n\n@Module({\n  imports: [\n    ConfigModule.forRoot(), // Load environment variables\n    MinioModule.registerAsync({\n      imports: [ConfigModule],\n      inject: [ConfigService],\n      useFactory: (config: ConfigService) => {\n        return {\n          endPoint: config.get<string>('MINIO_ENDPOINT') ?? '127.0.0.1',\n          port: parseInt(config.get<string>('MINIO_PORT') ?? '9000', 10),\n          useSSL: config.get<string>('MINIO_USE_SSL') === 'true',\n          accessKey: config.get<string>('MINIO_ACCESS_KEY') ?? process.env.MINIO_ACCESS_KEY ?? '',\n          secretKey: config.get<string>('MINIO_SECRET_KEY') ?? process.env.MINIO_SECRET_KEY ?? ''\n        };\n      },\n    }),\n  ],\n  providers: [MinioClientService],\n  exports: [MinioClientService],\n})\nexport class AppModule {}\n\n// Example minio-client.service.ts\nimport { Injectable } from '@nestjs/common';\nimport { MinioService } from 'nestjs-minio-client';\n\n@Injectable()\nexport class MinioClientService {\n  constructor(private readonly minioService: MinioService) {}\n\n  async listAllBuckets() {\n    return this.minioService.client.listBuckets();\n  }\n\n  // Add more methods for Minio operations here\n  async uploadFile(bucketName: string, objectName: string, filepath: string) {\n    // This is an example, actual Minio client usage would vary\n    // For instance, you might use putObject, fPutObject, etc.\n    console.log(`Uploading ${filepath} to ${bucketName}/${objectName}`);\n    // await this.minioService.client.fPutObject(bucketName, objectName, filepath);\n    return { success: true, objectName };\n  }\n}\n","lang":"typescript","description":"This quickstart demonstrates registering the `MinioModule` asynchronously using `@nestjs/config` to load Minio credentials from environment variables, and then injecting and using `MinioService` in another service to list buckets and simulate a file upload operation.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}