vite-plugin-info
raw JSON → 0.4.1 verified Mon Apr 27 auth: no javascript
Exports build metadata as Vite virtual modules, including build timestamp, git commit info, CI environment, and custom metadata. Current stable version is 0.4.1. The plugin provides three virtual modules: ~build/time (build start timestamp), ~build/info (git repository info via git-repo-info and CI detection via ci-info), and ~build/meta (user-defined metadata from vite.config options). It supports Vite 2.9+, 3.x, and 4.x, and ships TypeScript declarations. Compared to alternative approaches like manual file generation, it integrates directly into Vite's build pipeline and updates automatically on each build.
Common errors
error Cannot find module '~build/time' or its corresponding type declarations. ↓
cause TypeScript doesn't know about the virtual module; missing type declaration.
fix
Add declare module '~build/time' { const now: string; export default now; } in a .d.ts file.
error BuildInfo is not a function / TypeError: BuildInfo is not a constructor ↓
cause Used named import instead of default import.
fix
Change import { BuildInfo } from 'vite-plugin-info' to import BuildInfo from 'vite-plugin-info'.
error Error: The plugin 'vite-plugin-info' doesn't seem to be a valid Vite plugin. ↓
cause Plugin is improperly applied (e.g., array inside array, or not instantiated).
fix
Ensure plugins array contains the instantiated plugin: BuildInfo(), not BuildInfo.
Warnings
gotcha Module paths must match exactly: '~build/time', not '@/build/time' or 'virtual:build/time' ↓
fix Use the exact string '~build/time' etc. as the import specifier.
gotcha Meta options are serialized with JSON.stringify; functions or non-serializable values will break ↓
fix Only pass plain objects/arrays/strings/numbers/booleans as meta values.
breaking v0.4.x is the last version supporting Vite 2.x; v1.x drops Vite 2.x support ↓
fix Upgrade to Vite ^3.0.0 || ^4.0.0 if using v1.x plugin.
gotcha TypeScript users must declare module types for virtual modules in a .d.ts file ↓
fix Add declare module '~build/meta' { ... } etc. in your env.d.ts.
Install
npm install vite-plugin-info yarn add vite-plugin-info pnpm add vite-plugin-info Imports
- BuildInfo wrong
import { BuildInfo } from 'vite-plugin-info'correctimport BuildInfo from 'vite-plugin-info' - now (from ~build/time) wrong
import { now } from '~build/time'correctimport now from '~build/time' - sha (from ~build/info) wrong
import sha from '~build/info'correctimport { sha } from '~build/info' - message (from ~build/meta) wrong
import message from '~build/meta'correctimport { message } from '~build/meta' - name (from ~build/package) wrong
import name from '~build/package'correctimport { name } from '~build/package'
Quickstart
// vite.config.ts
import { defineConfig } from 'vite'
import BuildInfo from 'vite-plugin-info'
export default defineConfig({
plugins: [
BuildInfo({
meta: {
author: 'Alice',
version: process.env.APP_VERSION ?? 'dev',
}
})
]
})
// In your app code:
import now from '~build/time'
import { sha, CI } from '~build/info'
import { author, version } from '~build/meta'
import { name } from '~build/package'
console.log(`Build started: ${now}`)
console.log(`Git commit: ${sha}`)
console.log(`CI: ${CI}`)
console.log(`App meta: ${author} ${version}`)
console.log(`Package: ${name}`)