{"id":22011566,"url":"https://github.com/lasalefamine/pupperender","last_synced_at":"2025-04-13T05:36:07.934Z","repository":{"id":26523977,"uuid":"109268253","full_name":"LasaleFamine/pupperender","owner":"LasaleFamine","description":"ExpressJs middleware for rendering PWA to bots using Puppeteer.","archived":false,"fork":false,"pushed_at":"2025-02-28T08:28:09.000Z","size":1546,"stargazers_count":120,"open_issues_count":0,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-10T10:50:12.470Z","etag":null,"topics":["bot-render","expressjs","hacktoberfest","middleware","puppeteer","rendering"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LasaleFamine.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-02T13:26:59.000Z","updated_at":"2025-01-16T15:30:20.000Z","dependencies_parsed_at":"2023-11-26T13:16:30.932Z","dependency_job_id":"19989e1d-8bdd-4d26-82a9-4c05958bc6e6","html_url":"https://github.com/LasaleFamine/pupperender","commit_stats":{"total_commits":171,"total_committers":10,"mean_commits":17.1,"dds":"0.42105263157894735","last_synced_commit":"f68eb4312e4bcc400d0e7f3d1fe2265319b3c290"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LasaleFamine%2Fpupperender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LasaleFamine%2Fpupperender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LasaleFamine%2Fpupperender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LasaleFamine%2Fpupperender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LasaleFamine","download_url":"https://codeload.github.com/LasaleFamine/pupperender/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248670509,"owners_count":21142897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot-render","expressjs","hacktoberfest","middleware","puppeteer","rendering"],"created_at":"2024-11-30T02:17:23.230Z","updated_at":"2025-04-13T05:36:07.885Z","avatar_url":"https://github.com/LasaleFamine.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pupperender\n\n[![npm](https://img.shields.io/npm/v/pupperender.svg?style=flat)](https://github.com/LasaleFamine/pupperender)\n[![Build Status](https://travis-ci.com/LasaleFamine/pupperender.svg?branch=master)](https://travis-ci.com/LasaleFamine/pupperender) [![Build status](https://ci.appveyor.com/api/projects/status/7adc8sxp20kgw10v?svg=true)](https://ci.appveyor.com/project/LasaleFamine/pupperender) [![codecov](https://codecov.io/gh/LasaleFamine/pupperender/badge.svg?branch=master)](https://codecov.io/gh/LasaleFamine/pupperender?branch=master)\n\n\u003e ExpressJs middleware for rendering PWA to bots using Puppeteer\n\nThis is a middleware for ExpressJs that uses Puppeter for render the page requested by \"indexing\" bots (and not).\n\nThis is a fork of the [rendertron-middleware](https://www.npmjs.com/package/rendertron-middleware) but using [Puppeter](https://github.com/GoogleChrome/puppeteer) instead of [Rendertron](https://github.com/GoogleChrome/rendertron/), without needing another server to render the app. I have made some changes for my personal use (like removing the inject ShadyDOM option).\n\n## Install\n\n```\n$ yarn add pupperender\n```\n\n## Usage\n\n```js\nconst express = require('express');\nconst pupperender = require('pupperender');\n\nconst app = express();\n\napp.use(pupperender.makeMiddleware({}));\n\napp.use(express.static('files'));\napp.listen(8080);\n```\n\n## Configuration\n\nLike [rendertron-middleware](https://www.npmjs.com/package/rendertron-middleware) I decided to expose a  `makeMiddleware` function that takes a configuration object with the following\nproperties:\n\n| Property | Default | Description |\n| -------- | ------- | ----------- |\n| `userAgentPattern` | A set of known bots that benefit from pre-rendering. [Full list.](https://github.com/LasaleFamine/pupperender/blob/master/src/index.js) | RegExp for matching requests by User-Agent header. |\n| `excludeUrlPattern` | A set of known static file extensions. [Full list.](https://github.com/LasaleFamine/pupperender/blob/master/src/index.js) | RegExp for excluding requests by the path component of the URL. |\n| `timeout` | `11000` | Millisecond timeout for waiting the page to load. Used by Puppeter. See also the [Puppeter waitFor()](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagewaitforselectororfunctionortimeout-options-args) |\n| `debug` | `false` | DEBUG flag to show some logs |\n| `useCache` | `false` | If the puppeterized content should be cached to speed up subsequent requests. |\n| `cacheTTL` | `3600` | Seconds until cached content is disregarded and puppeterized again. Only considered when `useCache` is `true`. |\n\n\n## License\n\nMIT © [LasaleFamine](https://godev.space)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flasalefamine%2Fpupperender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flasalefamine%2Fpupperender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flasalefamine%2Fpupperender/lists"}