Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở
#3,045 0 bình luận 0 reaction 1 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@BenjyLimmy đang làm issue này rồi.

Từ ngày 14/10/2026.

  • #3046 của @BenjyLimmy — đang mở

Đánh giá

Issue này chưa được đánh giá.

Mô tả

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.
Ngôn ngữ chính
Rust
Star
6k
Fork
274
Merge trung bình
1 ngày 11 giờ
Pull request đã merge (30 ngày)
206

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của voidzero-dev/vite-plus

Tất cả issue của voidzero-dev/vite-plus

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.