Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

vp migrate crashes with "Undefined meta var" when a migrated config string contains `$`

Abierto
#3,045 0 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@BenjyLimmy ya está trabajando en esto.

Desde el 14/10/2026.

  • #3046 de @BenjyLimmy — abierto

Evaluación

Este issue todavía no se ha evaluado.

Descripción

bug
Describe the bug

vp migrate crashes when a config value it merges into vite.config.ts contains $ followed by uppercase letters or digits, for example $200 or $FOO.

■  Fail to parse yaml as Rule.
Error: Fail to parse yaml as Rule.
  cause: Error: Undefined meta var `200` used in `fix`.

The crash happens after migration has already deleted eslint.config.mjs and written .oxlintrc.json, so the project is left half-migrated.

It looks like generate_merge_rule in crates/vp_migration/src/vite_config.rs pastes the JSON config text into the ast-grep fix: template, where $NAME and $<digits> are metavariable syntax. Any string value with that shape breaks the rule, for example an ESLint message, an i18n ignore list or a URL with $ in it.

Expected: string values are inserted literally.

I intend to submit a PR for this.

Reproduction

Inline below. It needs three files and no repo.

Steps to reproduce

package.json

{
  "name": "vp-migrate-dollar-repro",
  "private": true,
  "type": "module",
  "packageManager": "[email protected]",
  "devDependencies": {
    "vite": "8.2.2",
    "eslint": "10.8.1"
  }
}

eslint.config.mjs

export default [
  {
    rules: {
      'no-restricted-imports': ['error', {
        paths: [{ name: 'moment', message: 'Use date-fns. moment costs $200 of bundle budget.' }],
      }],
    },
  },
];

vite.config.ts

import { defineConfig } from 'vite';

export default defineConfig({});
git init && git add -A && git commit -m init
pnpm install
pnpm dlx [email protected] vp migrate --no-interactive
git status --porcelain

Result: exit code 1 with the error above. git status shows eslint.config.mjs deleted and .oxlintrc.json untracked. Changing $200 to 200 dollars makes the migration succeed.

System Info
# vp env current: not available, the global vp CLI is not installed (ran through pnpm dlx)
$ pnpm dlx [email protected] vp -V
vp v1.1.0

Local vite-plus:
  vite-plus  v1.1.0

Tools:
  vite             v8.3.3
  rolldown         v1.2.12
  vitest           v5.0.3
  oxfmt            v0.72.0
  oxlint           v1.87.0
  oxlint-tsgolint  v7.0.2003

macOS 26.6.2 arm64, Node v22.23.2, pnpm 10.14.0
Used Package Manager

pnpm

Logs
■  Fail to parse yaml as Rule.
Error: Fail to parse yaml as Rule.
    at mergeAndRemoveJsonConfig (vite-plus/dist/editor-B8tkz7nL.js:9238:17)
  code: 'GenericFailure',
  cause: Error: Undefined meta var `200` used in `fix`.
      at mergeAndRemoveJsonConfig (vite-plus/dist/editor-B8tkz7nL.js:9238:17)
      at mergeViteConfigFiles (vite-plus/dist/editor-B8tkz7nL.js:9184:3)
      at rewriteMonorepoProject (vite-plus/dist/editor-B8tkz7nL.js:9988:2)
      at rewriteRootWorkspacePackageJson (vite-plus/dist/editor-B8tkz7nL.js:7947:2)
      at rewriteMonorepo (vite-plus/dist/editor-B8tkz7nL.js:9949:2)
      at executeMigrationPlan (vite-plus/dist/migration/bin.js:3860:32)
Validations
  • Read the Contributing Guidelines.
  • Check that there isn't already an issue for the same bug.
  • Confirm this is a Vite+ issue and not an upstream issue (Vite, Vitest, tsdown, Rolldown, or Oxc).
  • The provided reproduction is a minimal reproducible example.
Lenguaje dominante
Rust
Estrellas
6k
Forks
274
Merge medio
1 d 11 h
PR fusionados (30 d)
206

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de voidzero-dev/vite-plus

Todos los issues de voidzero-dev/vite-plus

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.