vp migrate crashes with "Undefined meta var" when a migrated config string contains `$`
Mantenedores costumam responder em até 1 dia
Avaliação
Esta issue ainda não foi avaliada.
Descrição
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.
- Linguagem predominante
- Rust
- Estrelas
- 6k
- Forks
- 274
- Merge médio
- 1d 11h
- PRs com merge (30d)
- 206
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de voidzero-dev/vite-plus
-
pending triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
voidzero-dev/vite-plus#2882 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
voidzero-dev/vite-plus#2097 · 10 comentários · 2 reações ·
Mantenedores costumam responder em até 1 dia
-
`vp dev` does not print "ready in N ms"Talvez já em andamento @fengmk2 assumiu há 1 dia. Abertabug
voidzero-dev/vite-plus#3053 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
the `vp migrate` command wrongly rewrite "vite/rolldown/plugins" to "vite-plus/rolldown/plugins"Talvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Abertapending triage
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
voidzero-dev/vite-plus#3050 ·
Mantenedores costumam responder em até 1 dia
-
Add a dedicated Package Management section with command reference pagesTalvez já em andamento @jong-kyung assumiu há 1 dia. Abertadocumentation
voidzero-dev/vite-plus#3041 · 4 comentários · 1 reação · 1 responsável ·
Mantenedores costumam responder em até 1 dia
Todas as issues de voidzero-dev/vite-plus
Issues semelhantes
-
Four problem loader browser tests fail on WindowsTalvez já em andamento @Patriciaath999 assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 1 dia
-
Claude Code guards in .claude/settings.json never block: they read unset variables and exit 1Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
starkware-libs/sequencer#15229 ·
Mantenedores costumam responder em até 1 dia
-
`fnox set` ignores piped stdin when `--description` is given, saving the secret without a valueAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
ActivityWatch/aw-notify-rs#47 · 1 comentário ·