Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ryanbekhen/nest-puppeteer
NestJS Puppeteer is a module that allows you to use Puppeteer in your NestJS application.
https://github.com/ryanbekhen/nest-puppeteer
nestjs nestjs-puppeteer puppeteer
Last synced: 19 days ago
JSON representation
NestJS Puppeteer is a module that allows you to use Puppeteer in your NestJS application.
- Host: GitHub
- URL: https://github.com/ryanbekhen/nest-puppeteer
- Owner: ryanbekhen
- License: mit
- Created: 2024-03-09T22:17:03.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2024-10-09T03:58:24.000Z (3 months ago)
- Last Synced: 2024-12-15T04:15:10.545Z (24 days ago)
- Topics: nestjs, nestjs-puppeteer, puppeteer
- Language: TypeScript
- Homepage:
- Size: 733 KB
- Stars: 1
- Watchers: 1
- Forks: 2
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# NestJS Puppeteer
[![npm version](https://badge.fury.io/js/nestjs-pptr.svg)](https://badge.fury.io/js/nestjs-pptr)
A [NestJS](https://nestjs.com/) module for [Puppeteer](https://pptr.dev/). This module provides a service that can be
injected into your controllers and services to perform various tasks related to web scraping and automation.## Installation
To install the module, run the following command in your project's root directory:
```bash
$ npm install nestjs-pptr puppeteer
$ npm install --save-dev @types/puppeteer# or
$ yarn add nestjs-pptr puppeteer
$ yarn add -D @types/puppeteer
```## Usage
### Registering the Module
The `PuppeteerModule` can be registered in your application by calling the `forRoot` method in the `imports` array of
your `AppModule`. The `forRoot` method accepts an optional `PuppeteerModuleOptions` object that can be used to configure
the module.```typescript
// app.module.ts
import { Module } from '@nestjs/common';
import { PuppeteerModule } from 'nestjs-pptr';
import { AppController } from './app.controller';
import { AppService } from './app.service';@Module({
imports: [PuppeteerModule.forRoot({ launchOptions: { headless: true } })],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {
}
```### Using the Service
The `PuppeteerCore` service can be injected into your controllers and services by using the `@InjectCore` decorator. The
`PuppeteerCore` service provides a wrapper around the `puppeteer` package and exposes the same methods and properties.```typescript
// app.service.ts
import { Injectable } from '@nestjs/common';
import { InjectCore, PuppeteerCore, PuppeteerInstance } from 'nestjs-pptr';
import { Page } from 'puppeteer';@Injectable()
export class AppService {
constructor(@InjectCore() private readonly puppeteer: PuppeteerCore) {
}async getScreenshot(url: string): Promise {
const instance: PuppeteerInstance = await this.puppeteer.launch('example');
const page: Page = await instance.browser.newPage();
await page.goto(url);
const screenshot = await page.screenshot();
await instance.browser.close();
return screenshot;
}
}
```### Using the Service with Custom Options
The `PuppeteerCore` service can be injected into your controllers and services by using the `@InjectCore` decorator. The
`PuppeteerCore` service provides a wrapper around the `puppeteer` package and exposes the same methods and properties.```typescript
// app.controller.ts
import { Controller, Get, Param, Res } from '@nestjs/common';
import { Response } from 'express';
import { AppService } from './app.service';@Controller()
export class AppController {
constructor(private readonly appService: AppService) {
}@Get(':url')
async getScreenshot(@Param('url') url: string, @Res() res: Response) {
const screenshot = await this.appService.getScreenshot(url);
res.set('Content-Type', 'image/png');
res.send(screenshot);
}
}
```More examples can be found in the [\__test\__](./__tests__) directory.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.