Skip to content
PluginStats

vite-plugin-glsl weekly downloads statistics

By UstymUkhman (2 listings) · npm · Vite plugins

Import, inline (and minify) GLSL/WGSL/Slang shader files

View on npm Fresh · Oct 18, 2026

vite-plugin-glsl has 83,622 recorded weekly downloads on npm, a decrease of 23.8% over the past 30 days, ranking #495 of 2,322 tracked listings.

Weekly downloads
83,622
Official API · Oct 18, 2026
7-day growth
-46.3%
-72.1K weekly downloads
30-day growth
-23.8%
-26.1K weekly downloads
90-day growth
-25.6%
-28.7K weekly downloads
Rank
#495
Among tracked npm listings

About vite-plugin-glsl

Vite Plugin GLSL

Import, inline (and minify) GLSL/WGSL/Slang shader files

npm GitHub package.json version GitHub

Inspired by threejs-glsl-loader and vite-plugin-string, compatible with Babylon.js, three.js and lygia.

Installation

npm i vite-plugin-glsl --save-dev
# or
yarn add vite-plugin-glsl --dev
# or
pnpm add -D vite-plugin-glsl
# or
bun add vite-plugin-glsl --dev

Usage

// vite.config.js
import { defineConfig } from 'vite';
import glsl from 'vite-plugin-glsl';

export default defineConfig({
  plugins: [glsl()]
});
With TypeScript

Add extension declarations to your types in tsconfig.json:

{
  "compilerOptions": {
    "types": [
      "vite-plugin-glsl/ext"
    ]
  }
}

or as a package dependency directive to your global types:

/// <reference types="vite-plugin-glsl/ext" />
With Slang Shaders

Slang shaders are not supported out of the box; however, starting from version 1.6.0, it's quite easy to use them with this plugin. You'll need some minimal setup you can find here to copy-paste in your vite.config file. The idea is to use multiple importKeywords to include Slang shader chunks and convert the output shader to a web-friendly format (like WGSL) by using the onComplete option and the Slang compiler.

Default Options

glsl({
  include: [                      // Glob pattern, or array of glob patterns to import
    '**/*.glsl', '**/*.wgsl',
    '**/*.vert', '**/*.frag',
    '**/*.vs', '**/*.fs'
  ],
  exclude: undefined,             // Glob pattern, or array of glob patterns to ignore
  defaultExtension: 'glsl',       // Shader suffix to use when no extension is specified
  warnDuplicatedImports: true,    // Warn if the same chunk was imported multiple times
  removeDuplicatedImports: false, // Automatically remove an already imported chunk
  importKeywords: ['#include'],   // Keywords used to import shader chunks
  onComplete: undefined,          // Function to call with output shader
  minify: false,                  // Minify/optimize output shader code
  watch: true,                    // Recompile shader on change
  root: '/'                       // Directory for root imports
})

Example

root
├── src/
│   ├── glsl/
│   │   ├── chunk0.frag
│   │   ├── chunk3.frag
│   │   ├── main.frag
│   │   ├── main.vert
│   │   └── utils/
│   │       ├── chunk1.glsl
│   │       └── chunk2.frag
│   └── main.js
├── vite.config.js
└── package.json
// main.js
import fragment from './glsl/main.frag';
// main.frag
#version 300 es

#ifndef GL_FRAGMENT_PRECISION_HIGH
  precision mediump float;
#else
  precision highp float;
#endif

out vec4 fragColor;

#include chunk0.frag;

void main (void) {
  fragColor = chunkFn();
}
// chunk0.frag

// ".glsl" extension will be added automatically:
#include utils/chunk1;

vec4 chunkFn () {
  return vec4(chunkRGB(), 1.0);
}
// utils/chunk1.glsl

#include chunk2.frag;
#include ../chunk3.frag;

vec3 chunkRGB () {
  return vec3(chunkRed(), chunkGreen(), 0.0);
}
// utils/chunk2.frag

float chunkRed () {
  return 0.0;
}
// chunk3.frag

float chunkGreen () {
  return 0.8;
}

Will result in:

// main.frag
#version 300 es

#ifndef GL_FRAGMENT_PRECISION_HIGH
  precision mediump float;
#else
  precision highp float;
#endif

out vec4 fragColor;

float chunkRed () {
  return 0.0;
}

float chunkGreen () {
  return 0.8;
}

vec3 chunkRGB () {
  return vec3(chunkRed(), chunkGreen(), 0.0);
}

vec4 chunkFn () {
  return vec4(chunkRGB(), 1.0);
}

void main (void) {
  fragColor = chunkFn();
}

Change Log

  • Starting from v1.6.0 this plugin supports onComplete callback function to customize output shaders.

  • Starting from v1.5.2 this plugin uses vite.transformWithOxc function when available.

  • Starting from v1.5.1 this plugin is fully compatible with vite^7.0.0.

  • Starting from v1.5.0 this plugin supports a custom importKeyword to include shader chunks.

  • Starting from v1.4.0 compress option was renamed to minify and now it allows a promise callback.

  • Starting from v1.3.2 this plugin allows to automatically remove already imported chunks with the removeDuplicatedImports option set to true.

  • Starting from v1.3.1 this plugin is fully compatible with vite^6.0.0.

  • Starting from v1.3.0 this plugin will not remove comments starting with ///, unless compress option is set to true.

  • Starting from v1.2.0 this plugin is fully compatible with vite^5.0.0.

  • Starting from v1.1.1 this plugin has a complete TypeScript support. Check "Usage" > "With TypeScript" for more info.

  • Starting from v1.0.0 this plugin is fully compatible with vite^4.0.0.

  • Starting from v0.5.4 this plugin supports custom compress callback function to optimize output shader length after all shader chunks have been included.

  • Starting from v0.5.0 this plugin supports shaders hot reloading when watch option is set to true.

  • Starting from v0.4.0 this plugin supports chunk imports from project root and root option to override the default root directory.…

Description from the npm listing.

  • vite
  • glsl
  • wgsl
  • lygia
  • webgl
  • webgpu
  • vitejs
  • plugin
  • threejs
  • shaders
  • babylonjs
  • vite-plugin
  • glsl-shaders
  • wgsl-shaders
  • webgl-shaders
  • webgpu-shaders

README badge

Show your rank in a README or on your website. The badge updates automatically.

Charts

Images: 30d · 1y · all time · 1600×900 dark

Adoption over time

vite-plugin-glsl weekly downloads on npm, last 90 days: 83,622 weekly downloads as of Oct 18, 2026, -25.6% over 90 days.vite-plugin-glslWeekly downloads on npm · Last 90 days83,622downloads / week-25.6% over 90 days60K80K100K120K140K160K180KJul 20Aug 4Aug 19Sep 3Sep 18Oct 3Oct 18downloads / weekobservedarchived (Internet Archive)no observationsJul 22, 2026 – Oct 18, 2026 · 89 observations · Updated Oc…pluginstats.com
vite-plugin-glsl weekly downloads on npm, last 90 days: 83,622 weekly downloads as of Oct 18, 2026, -25.6% over 90 days.

7/30/90-day growth

vite-plugin-glsl weekly downloads growth on npm: -46.3% over 7 days, -23.8% over 30 days, -25.6% over 90 days.vite-plugin-glslWeekly downloads growth on npm83,622downloads / week now7-day growth-72,130 weekly downloads-46.3%30-day growth-26,134 weekly downloads-23.8%90-day growth-28,733 weekly downloads-25.6%Growth vs. nearest observation to each baseline date · Updated Oct 18, 2026pluginstats.com
vite-plugin-glsl weekly downloads growth on npm: -46.3% over 7 days, -23.8% over 30 days, -25.6% over 90 days.

Ranking history

vite-plugin-glsl npm ranking history: currently #495 (by weekly downloads).vite-plugin-glslnpm ranking · by weekly downloads · Last 90 days#495current rank#475#480#485#490#495#500Jul 22Aug 6Aug 21Sep 5Sep 20Oct 5Oct 20rankOct 18, 2026 – Oct 20, 2026 · 3 observations · Updated Oct 18, 2026pluginstats.com
vite-plugin-glsl npm ranking history: currently #495 (by weekly downloads).

Listing placement

All npm2,320 listings · 116 pages · 1,161 shown · page 25, #15 (overall #495)
All npm: every listing in weekly downloads order

Listing placement

Vite plugins253 listings · 13 pages · page 4, #9 (overall #69)
Vite plugins: every listing in weekly downloads order

Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.

Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.

Recent observations

Full history (122)
Recent weekly downloads observations for vite-plugin-glsl
Date (UTC)Weekly downloadsChange vs. previous
83,622+6.5K
77,172-11.1K
88,236-4.8K
93,061-36.1K
129,119-32.5K
161,6450
161,645+5.9K
155,752+840
154,912+4.1K
150,784+13K
137,773+6.9K
130,895+4.3K
126,630-31.3K
157,910—

Similar npm Vite plugins plugins

All 20 vite-plugin-glsl alternatives

Data source

Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.

Listing: https://www.npmjs.com/package/vite-plugin-glsl. First seen Oct 16, 2026; last successful collection Oct 20, 2026. See the methodology.