1.0.0 • Published 11 months ago

@rendela/vite v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Rendela - Pre-rendering for Vite SPAs

Rendela is an NPM library that allows you to pre-render selected pages of your Single Page Application to improve SEO, especially on landing pages that need to be indexed correctly by search engines.

Features

  • Pre-renders selected pages of your SPA for improved SEO
  • Seamless integration with Vite build process
  • Configurable rendering options
  • Support for Nginx and Apache server configurations
  • Automatic Chromium handling

Prerequisites

Before installing Rendela, ensure you have:

  • A Vite-based project
  • Node.js version 14 or higher
  • Chrome or Chromium browser (required for headless rendering)

Installing Chromium

Linux:

apt update && apt install chromium

Windows: 1. Download Chromium from the official website 2. Extract to desired location (e.g., C:\Program Files\Chromium) 3. Add to PATH environment variable

macOS:

# Install Homebrew if needed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Chromium
brew install chromium

Installation

Install Rendela in your Vite project:

npm i @rendela/vite

Configuration

  1. Add the plugin to your vite.config.js or vite.config.ts:
import { defineConfig } from 'vite';
import rendela from '@rendela/vite';

export default defineConfig({
  plugins: [
    rendela()
  ]
});
  1. Create a rendela.config.js in your project root (or let Rendela auto-generate it):
export default {
  pages: [
    { url: "/" },
    { url: "/about" },
    { url: "/products" }
  ],
  buildDir: "dist",
  port: 3300,
  savePath: "pages",
  pageWaitTime: 10,
  pageTimeout: 5000,
  debug: true,
  autoStartOnBuild: true,
  concurrencyLimit: 1,
  chromiumExecutablePath: undefined
};

Configuration Options

ParameterTypeDefaultDescription
pagesArray[{ url: '/' }]Pages to pre-render
buildDirString"dist"Build directory
portNumber3300Server port for rendering
savePathString"pages"Output directory for rendered pages
pageWaitTimeNumber10Wait time after load (ms)
pageTimeoutNumber5000Page load timeout (ms)
debugBooleantrueEnable debug logging
autoStartOnBuildBooleantrueAuto-render after build
concurrencyLimitNumber1Concurrent page limit
chromiumExecutablePathStringundefinedCustom Chromium path

Usage

With autoStartOnBuild: true, pages will be pre-rendered automatically after build. Otherwise, run:

npx rendela

Server Configuration

Nginx

server {
   listen 80;
   root /var/www/your-site/dist;
   
   location = / {
        try_files /pages/index.html =404;
   }
   
   location / {
        try_files $uri /pages/$uri/index.html /index.html =404;
   }
}

Apache

<VirtualHost *:80>
    DocumentRoot /var/www/your-site/dist

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/$
    RewriteRule ^$ /pages/index.html [L]

    RewriteCond %{REQUEST_URI} !^/pages/
    RewriteRule ^(.*)$ /pages/$1/index.html [L]
</VirtualHost>

License

MIT

1.0.0

11 months ago

0.1.0

11 months ago

0.0.11

11 months ago

0.0.10

11 months ago

0.0.9

11 months ago

0.0.8

12 months ago

0.0.7

12 months ago

0.0.6

12 months ago

0.0.5

12 months ago

0.0.4

12 months ago

0.0.2

12 months ago

0.0.1

12 months ago