Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

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

Offen
#3,045 0 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

@BenjyLimmy arbeitet bereits daran.

Seit 14.10.2026.

  • #3046 von @BenjyLimmy — offen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Beschreibung

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.
Vorherrschende Sprache
Rust
Sterne
6k
Forks
274
Ø Merge
1 T. 11 Std.
Gemergte PRs (30 T.)
211

Entwicklungsumgebung

In Codespaces öffnen

Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus voidzero-dev/vite-plus

Alle Issues in voidzero-dev/vite-plus

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.