{"id":22825,"library":"vite-plugin-run","title":"vite-plugin-run","description":"Vite plugin that runs shell commands on file changes or server startup. v0.9.0 (released 2025) drops CommonJS support and migrates to bun/tsdown. Key plugin options: silent, skipDts, input. Runner options include pattern (minimatch), condition (function), debounce, startup, build, onFileChanged. Uses execa for shell commands. Maintained by Enzo Innocenzi, updates ~yearly.","status":"active","version":"0.9.0","language":"javascript","source_language":"en","source_url":"https://github.com/innocenzi/vite-plugin-run","tags":["javascript","typescript"],"install":[{"cmd":"npm install vite-plugin-run","lang":"bash","label":"npm"},{"cmd":"yarn add vite-plugin-run","lang":"bash","label":"yarn"},{"cmd":"pnpm add vite-plugin-run","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency, requires Vite 8+","package":"vite","optional":false}],"imports":[{"note":"v0.9.0 is ESM-only; use import syntax. CommonJS require will fail.","wrong":"const { run } = require('vite-plugin-run')","symbol":"run","correct":"import { run } from 'vite-plugin-run'"},{"note":"TypeScript users should use 'import type' for type-only imports. Available since v0.4.0.","wrong":"import { RunOptions } from 'vite-plugin-run'","symbol":"RunOptions","correct":"import type { RunOptions } from 'vite-plugin-run'"},{"note":"The plugin has no default export; always use named import 'run'.","wrong":"import vitePluginRun from 'vite-plugin-run'","symbol":"Plugin","correct":"import { run } from 'vite-plugin-run'"}],"quickstart":{"code":"import { defineConfig } from 'vite';\nimport { run } from 'vite-plugin-run';\n\nexport default defineConfig({\n  plugins: [\n    run([\n      {\n        name: 'lint',\n        run: ['eslint', '--fix'],\n        pattern: 'src/**/*.ts',\n        debounce: 100,\n      },\n    ]),\n  ],\n});","lang":"typescript","description":"Basic Vite plugin setup to run eslint on TypeScript file changes with 100ms debounce."},"warnings":[{"fix":"Use ES module imports with 'import { run } from ...' instead of 'require()'.","message":"v0.9.0 removed CJS support; package is ESM-only.","severity":"breaking","affected_versions":">=0.9.0"},{"fix":"Remove any usage of 'throttle' from runner options and use 'debounce' (milliseconds).","message":"v0.8.0 dropped 'throttle' option; only 'debounce' is supported.","severity":"breaking","affected_versions":">=0.8.0"},{"fix":"Ensure vite version meets peer dependency requirements (vite ^8.0.8 for v0.9.0).","message":"v0.8.0 upgraded dependencies, may require Vite 4.4+.","severity":"breaking","affected_versions":">=0.8.0 <0.9.0"},{"fix":"Use 'condition' or 'pattern' to react to file changes instead.","message":"'onFileChanged' callback is deprecated; plan to remove in v1.0.","severity":"deprecated","affected_versions":">=0.4.0"},{"fix":"Use narrow minimatch patterns or add a 'condition' function for fine-grained control.","message":"If 'pattern' is specified without 'condition', the command runs for any file matching pattern. Ensure patterns are specific enough to avoid unnecessary command execution.","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use import: import { run } from 'vite-plugin-run'","cause":"CJS require() used with ESM-only module (v0.9.0+).","error":"const { run } = require('vite-plugin-run')"},{"fix":"Run 'npm install vite-plugin-run' and ensure vite 8.x is installed.","cause":"Package not installed or vite version incompatible (requires vite ^8.0.8).","error":"Cannot find module 'vite-plugin-run'"},{"fix":"Use named import: import { run } from 'vite-plugin-run'","cause":"Default import used incorrectly (e.g., import vitePluginRun from 'vite-plugin-run').","error":"TypeError: run is not a function"},{"fix":"Switch project to ESM (\"type\": \"module\" in package.json) or use dynamic import: const { run } = await import('vite-plugin-run')","cause":"Trying to require an ESM-only package in a CommonJS context.","error":"ERR_REQUIRE_ESM: require() of ES Module"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}