Skip to content

NestJS 创建包

在 NestJS 中创建一个库(lib)包可以帮助您封装可重用的功能,并将其与其他应用程序共享。以下是创建和发布 NestJS 库的步骤:

1. 创建库

1.1 使用 Nest CLI 创建库

首先,确保您已经安装了 Nest CLI。然后,在您的 NestJS 项目中使用以下命令创建库:

bash
nest generate library my-lib

这将在项目中创建一个名为 my-lib 的库文件夹,包含基本的库结构。

1.2 库结构

生成的库结构通常包含以下文件:

my-lib/
  ├── src/
  │   ├── my-lib.module.ts
  │   ├── my-lib.service.ts
  │   └── index.ts
  ├── package.json
  └── tsconfig.json
  • my-lib.module.ts: 库的主模块。
  • my-lib.service.ts: 库的服务或功能实现。
  • index.ts: 导出库的公共 API。

2. 实现库功能

my-lib.service.ts 中,您可以实现库的具体功能。例如:

typescript
import { Injectable } from '@nestjs/common';

@Injectable()
export class MyLibService {
  sayHello(): string {
    return 'Hello from MyLib!';
  }
}

my-lib.module.ts 中,注册您的服务:

typescript
import { Module } from '@nestjs/common';
import { MyLibService } from './my-lib.service';

@Module({
  providers: [MyLibService],
  exports: [MyLibService], // 导出服务,以便在其他模块中使用
})
export class MyLibModule {}

3. 使用库

您可以在 NestJS 应用程序的其他模块中导入并使用该库:

typescript
import { Module } from '@nestjs/common';
import { MyLibModule } from 'my-lib'; // 引入库

@Module({
  imports: [MyLibModule],
})
export class AppModule {}

然后,在控制器中使用服务:

typescript
import { Controller, Get } from '@nestjs/common';
import { MyLibService } from 'my-lib';

@Controller('hello')
export class HelloController {
  constructor(private readonly myLibService: MyLibService) {}

  @Get()
  getHello(): string {
    return this.myLibService.sayHello();
  }
}

4. 发布库

4.1 更新 package.json

在库的 package.json 文件中,确保配置正确:

json
{
  "name": "my-lib",
  "version": "1.0.0",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "scripts": {
    "build": "tsc"
  },
  "peerDependencies": {
    "@nestjs/common": "^9.0.0",
    "@nestjs/core": "^9.0.0"
  }
}

4.2 编译库

使用 TypeScript 编译器编译库:

bash
npm run build

4.3 发布到 npm

确保您已登录到 npm,然后运行以下命令发布库:

bash
npm publish

总结

通过以上步骤,您可以创建一个 NestJS 库并在其他项目中使用。使用库可以帮助您实现代码复用,提高开发效率。希望这个指南对您有所帮助!