`vp migrate` copies string `extends` paths from `.oxlintrc.json` into `lint`, which `vp lint` rejects
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- rust, typescript
- Lĩnh vực
- developer-experience
Hướng nghiên cứu
Start from the reproduction repo (cr101/vp-migrate-extends-repro) and run the migrate step to see how .oxlintrc.json is folded into the lint block of vite.config.ts. The string extends entries are copied unchanged, so the migrator needs to resolve each path relative to the original file, or keep the file and skip the lint block. Done when vp lint and tsc -p . both pass on the migrated repro, or the migrator warns and leaves the config for manual migration.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
.oxlintrc.json can extend other config files by path, as the Oxlint docs describe:
{ "extends": ["./shared/oxlint-config.json"] }
vp migrate deletes .oxlintrc.json and copies the path string unchanged into the lint block of vite.config.ts:
lint: {
extends: ["./shared/oxlint-config.json"],
// ...
}
Vite+ then rejects that config:
vp lintfails with "extends[0]must be a config object (strings/paths are not supported)."tscfails withTS2559: Type 'string' has no properties in common with type 'OxlintConfig'.
The migration reports success, but linting is broken afterwards, and the original .oxlintrc.json has been deleted.
Expected: either the migrator resolves each extends path and inlines or imports the config as an object, or it keeps .oxlintrc.json, leaves the lint block out and warns that the config needs to be migrated by hand.
Reproduction
https://github.com/cr101/vp-migrate-extends-repro
Steps to reproduce
npm install
npm run lint # oxlint applies no-debugger from the extended config
npx -y [email protected] vp migrate --no-interactive --no-agent --no-editor --no-hooks
npx vp lint # fails
npx tsc -p . # fails
System Info
$ vp env current
Node.js:
Version 26.12.0
Source system PATH
Bin Path C:\Program Files\nodejs\node.exe
Installed true
Mode system_first
Package Manager:
Name npm
Version 11.20.0
Source system PATH
Bin Paths
npm C:\Program Files\nodejs\npm.cmd
npx C:\Program Files\nodejs\npx.cmd
Installed true
Mode system_first
$ vp --version # global CLI, in the repro before migration
vp v1.2.0
Local vite-plus:
vite-plus Not found
Tools:
vite Not found
rolldown Not found
vitest Not found
oxfmt Not found
oxlint Not found
oxlint-tsgolint Not found
tsdown Not found
Environment:
Package manager npm v11.8.0
Node.js v24.22.0
$ npx vp --version # local CLI, in the repro after migration
vp v1.2.0
Local vite-plus:
vite-plus v1.2.0
Tools:
vite v8.3.4
rolldown v1.2.13
vitest v5.0.4
oxfmt v0.73.0
oxlint v1.88.0
oxlint-tsgolint v7.0.2004
tsdown v0.23.1
Windows x64. The migration and checks ran on system Node 26.12.0, with npm 11.8.0 selected by `packageManager`.
Used Package Manager
npm
Logs
$ npx vp migrate --no-interactive --no-agent --no-editor --no-hooks
◇ Migrated . to Vite+ 1.2.0
• Node 26.12.0 npm 11.8.0
✓ Dependencies installed in 16s
• 1 config update applied, 1 file had imports rewritten
$ npx vp lint
Failed to parse oxlint configuration file.
x Failed to load config: ...\vp-extends-repro\vite.config.ts
|
| Error: `extends[0]` must be a config object (strings/paths are not supported).
$ npx tsc -p .
vite.config.ts(6,15): error TS2559: Type 'string' has no properties in common with type 'OxlintConfig'.
Validations
- Read the Contributing Guidelines.
- Check that there isn't already an issue for the same bug. Related but different: #2430 and #2483 (dynamic
oxlint.config.ts/oxfmt.config.ts), and #2037 (migrate follow-ups; noextendsitem). - Confirm this is a Vite+ issue and not an upstream issue. Oxlint supports path
extendsin.oxlintrc.json; the invalid config is produced byvp migrate. - 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 12 giờ
- Pull request đã merge (30 ngày)
- 205
Chuẩn bị môi trường
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.
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của voidzero-dev/vite-plus
-
pending triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
voidzero-dev/vite-plus#2882 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
voidzero-dev/vite-plus#2097 · 10 bình luận · 2 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
pending triage
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
voidzero-dev/vite-plus#3092 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
voidzero-dev/vite-plus#3091 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
voidzero-dev/vite-plus#3090 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của voidzero-dev/vite-plus
Issue tương tự
-
Stack overflow in `check bans` with `include-dependencies = true` and a dev-dependency cycleĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
EmbarkStudios/cargo-deny#910 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
tursodatabase/turso#10054 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
build: Update rust versionCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởdependencies
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
ibm-granite-community/granite-cli#229 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 2 ngày
-
setTargetAtTime booked ahead of time starts its curve early (values blow up before start_time)Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
orottier/web-audio-api-rs#658 ·