- Để giảm gánh nặng phải tự lắp ghép riêng các công cụ phát triển web cho từng dự án, Vite+ gộp runtime, trình quản lý gói, công cụ build·test·kiểm tra vào một điểm vào duy nhất
vp dev, vp check, vp test, vp build, vp pack, vp run được kết nối với Vite 8, Vitest, Rolldown, tsdown, Oxlint, Oxfmt để cung cấp hệ thống lệnh nhất quán
- Kể từ sau bản alpha, dự án đã trải qua hơn 12 phiên bản và hơn 500 PR, cải thiện về caching, migration, template cho tổ chức, hỗ trợ mạng doanh nghiệp và độ ổn định đa nền tảng
- Theo các kho công khai, hơn 1.300 dự án phụ thuộc vào
vite-plus, và các dự án như Dify, critical, BlockNote, vinext, îles, Inkline, npmx đã sử dụng
- Vì vẫn chưa đến giai đoạn 1.0, các hạng mục như remote caching, hỗ trợ GitLab CI/CD, khả năng tương thích framework·plugin, migration, kênh phân phối và cải thiện chẩn đoán vẫn còn ở phía trước
Toolchain tích hợp mà Vite+ mang lại
- Vite+ đã ra mắt bản beta dưới dạng toolchain tích hợp cho phát triển web
- Từ một điểm vào duy nhất, nó quản lý runtime và trình quản lý gói, đồng thời cung cấp nhiều công cụ frontend trong một stack đã được kiểm chứng
- Đây là mã nguồn mở hoàn toàn theo giấy phép MIT và không phụ thuộc vào framework cụ thể nào
- Có thể dùng cho nhiều loại dự án web như CLI, thư viện, web app
- Dự án mới bắt đầu với
vp create, còn dự án hiện có bắt đầu với vp migrate
Dùng cùng một bộ lệnh để phát triển·kiểm tra·build
- Vite+ được thiết kế để dùng chung một hệ thống lệnh, thay vì phải học từng tổ hợp công cụ và lệnh khác nhau ở mỗi repository
- Các lệnh chính như sau
vp dev: khởi chạy máy chủ phát triển dựa trên Vite 8, bao gồm hot module replacement
vp check: chạy định dạng bằng Oxfmt, lint bằng Oxlint và kiểm tra kiểu cùng một lúc
vp test: chạy unit test dựa trên Vitest
vp build: thực hiện production build dựa trên Vite 8
vp pack: bundle thư viện dựa trên tsdown cùng với các best practice
vp run: chạy npm script hoặc tác vụ bằng trình chạy tác vụ tích hợp có nhận biết monorepo, đồng thời dùng caching thông minh
- Khi team và codebase càng lớn, các lợi ích sau càng rõ rệt
- Phiên bản công cụ được đồng bộ
- Việc chia sẻ cấu hình trở nên dễ hơn
- Giảm các bước thiết lập cho người đóng góp mới
- CI chạy cùng các lệnh như môi trường phát triển cục bộ
- Nó phù hợp với các lập trình viên không muốn lặp đi lặp lại việc tự lắp ráp toolchain, và các team muốn có cấu hình nhất quán trên toàn dự án
- Vite+ không thay thế hệ sinh thái Vite
- Plugin Vite vẫn là plugin Vite
- Dự án vẫn có thể tiếp tục dùng trình quản lý gói mong muốn ở bên trong
- Vite+ cung cấp lớp tích hợp để các thành phần này hoạt động như một toolchain thống nhất
Những thay đổi từ alpha đến beta
- Sau bản alpha của Vite+, dự án đã được kiểm thử trên các dự án thực tế, phát hành hơn 12 phiên bản và hợp nhất hơn 500 PR
- Các cải tiến chính gồm
- Caching thông minh hơn:
vp run kết hợp theo dõi dữ liệu tự động với metadata do Vite báo cáo để cache build hoạt động chính xác mà không cần liệt kê thủ công input, output và biến môi trường
- Cải thiện migration:
vp migrate xử lý nhiều cấu hình ứng dụng khác nhau và còn cung cấp prompt migration cho agent
- Tính năng cho doanh nghiệp: template tổ chức giúp chuẩn hóa cấu hình giữa các team, và HTTP nhận biết proxy cùng CA tùy chỉnh cho phép chạy
vp ngay cả sau proxy và tường lửa doanh nghiệp
- Đa nền tảng:
vp đã được tăng cường để hoạt động tốt hơn trên các hệ điều hành và shell chính
- Tinh chỉnh và cải tiến: hơn 180 bản sửa lỗi và cải tiến đã được áp dụng vào
vite-plus
- Có thể xem chi tiết thay đổi tại lịch sử phát hành của Vite+
Các công cụ nền tảng cũng phát triển cùng nhau
- Trong quá trình Vite+ được xây dựng, các công cụ nền tảng cũng tiếp tục được cải thiện
- Những thay đổi chính kể từ sau alpha gồm
Các trường hợp áp dụng thực tế
- Có hơn 1.300 kho công khai phụ thuộc vào
vite-plus, chưa tính các dự án riêng tư và cài đặt CLI toàn cục
- Vite+ đang được dùng trong nhiều loại dự án khác nhau
- Dify: nền tảng mã nguồn mở để xây dựng ứng dụng LLM
- critical: công cụ critical-path CSS độc lập framework của Addy Osmani
- BlockNote: trình soạn thảo rich text kiểu Notion dựa trên block cho React
- vinext: framework drop-in tương thích Next.js dựa trên Vite
- zerobyte: công cụ tự động hóa sao lưu cho người dùng self-hosted, xây bằng TanStack và React
- îles: trình tạo website islands partial hydration cho Vue
- agentsview: công cụ tìm kiếm·phân tích phiên ưu tiên cục bộ cho coding agent, xây bằng Svelte
- Inkline: thư viện UI component hỗ trợ Vue, React, Svelte, Angular, Solid, Qwik, Astro
- npmx: trình duyệt npm registry mã nguồn mở dựa trên Nuxt
- Daniel Roe của npmx cho biết Vite+ giúp duy trì trải nghiệm phát triển nhanh chóng, đồng thời tăng tốc cả CI và quá trình review
Những việc còn lại trước 1.0
- Vite+ đã ổn định nhưng vẫn chưa hoàn thiện, và được khuyến nghị áp dụng nếu nó đáp ứng các nhu cầu mà một toolchain tích hợp cần có
- Các hạng mục sẽ tập trung cho đến 1.0 gồm
- Triển khai remote caching cho Vite Task là
vp run
- Đưa
setup-vp vào GitLab CI/CD
- Cải thiện khả năng tương thích trên toàn bộ framework và plugin của Vite
- Hỗ trợ thêm nhiều đối tượng migration hơn
- Bổ sung các kênh phân phối như Homebrew formula chính thức
- Cải thiện tài liệu và chẩn đoán để rõ ràng hơn
- Trước khi phát hành 1.0, dự án ưu tiên phản hồi từ cộng đồng để thu hẹp những khoảng trống tương thích còn lại
Cài đặt và migration
- Lệnh
vp toàn cục được cài trên macOS/Linux bằng lệnh sau
curl -fsSL https://vite.plus | bash
- Trên Windows, dùng lệnh PowerShell sau
irm https://vite.plus/ps1 | iex
- Tạo dự án mới bằng lệnh sau
vp create
- Để thử Vite+ trên dự án Vite hiện có, dùng lệnh sau
vp migrate
vp migrate sẽ hiển thị kế hoạch thay đổi, nhưng với các dự án phức tạp có thể vẫn cần các bước xử lý thủ công tiếp theo
- Cần đọc hướng dẫn migration trước khi đưa Vite+ vào dự án production
- Dự án đặc biệt mong nhận phản hồi từ các lập trình viên đang migration dự án hiện có, tác giả framework và plugin, cũng như các team duy trì repository quy mô lớn
- Các kênh liên quan
1 bình luận
Ý kiến trên Hacker News
Tôi rất thích Vite, nhưng thật sự không biết các công cụ khác là gì
Mới cúi đầu làm việc một lúc mà hệ sinh thái công cụ frontend đã đột nhiên tiến hóa, và tôi tự hỏi liệu có xu hướng hướng tới một stack nhàm chán nhưng hoạt động tốt hay không
oxlint thay thế eslint, tương thích với định dạng file cấu hình và cực nhanh vì không được viết bằng JavaScript. Tôi cũng đã thử biome, nhưng oxlint có nhiều rule hơn và khả năng tương thích với eslint tốt hơn
oxfmt thay thế prettier, nhanh hơn vì không được viết bằng JavaScript, còn rolldown thay thế rollup, tương thích nhưng nhanh hơn nhiều. Với các dự án mới, tôi đã chủ yếu dùng những công cụ này
Trước đây phải dùng các công cụ từ những dự án mã nguồn mở khác nhau, mỗi thứ có cấu hình và chu kỳ cập nhật riêng, còn giờ chúng được xử lý như một toolchain đơn giản duy nhất
Vite+ về cơ bản chính là stack “nhàm chán nhưng hoạt động tốt”, đồng thời hiệu năng tốt hơn và cần ít cấu hình hơn
Viết lại bằng Rust để làm cho nhanh, như eslint → oxlint, prettier → oxfmt; còn webpack → Vite thì Vite đã đủ phổ biến nên đang được chấp nhận
rolldown → tsdown bổ sung hỗ trợ TypeScript, còn jest → vitest thì hợp với Vite
Nói cách khác, họ lấy các thông lệ đã hình thành trong 10 năm qua rồi gói hỗ trợ TypeScript, hiệu năng dựa trên Rust và khả năng tương tác lại với nhau
Tôi cũng đang dùng Deno, nên tò mò không biết điểm nào của nó hữu ích
Tôi thích Vite, Vitest, Oxlint, Oxfmt và thường xem các công cụ này trước tiên trong hầu hết dự án mới
Hy vọng họ có đủ vốn để tiếp tục phát triển ít nhất trong 10 năm tới
Tốt hơn nhiều so với việc mở một dự án cũ ra và thấy Gulp, Grunt, webpack cùng đủ loại công cụ lộn xộn khác trộn lẫn. Tôi cũng đã chuyển một dự án như vậy sang stack mới
Điều mấu chốt là Cloudflare có để họ tiếp tục xây dựng Vite và các tính năng Vite+ hay không. Vì đó là những tính năng có lợi không chỉ cho Cloudflare mà cho mọi nền tảng đám mây
https://blog.cloudflare.com/voidzero-joins-cloudflare/
Đặc biệt càng khó hơn nếu là full-stack có server-side rendering; nếu chỉ nhìn frontend và bỏ TypeScript ra thì khá dễ
Cần chờ xem Vite+ có giúp ích trong các trường hợp phức tạp hơn hay không
Tôi nghĩ dự án này nên tìm một cái tên tốt hơn
Nó khá dễ gây nhầm lẫn vì thực ra không hẳn là một Vite tốt hơn, mà là một gói các công cụ khác
Khi đó Void Zero có thể đã muốn kiếm tiền từ thương hiệu Vite, nhưng giờ đã được Cloudflare mua lại thì cũng không còn cần làm vậy nữa
Tôi đang dùng Vite, Vitest, Rolldown, tsdown, Oxlint, Oxfmt và rất hài lòng
Tôi cũng đã hard fork nhiều package và không muốn quay lại. Tất cả cứ thế hoạt động tốt
Nếu thấy rối vì tên gọi, hãy bắt đầu từ Oxlint https://oxc.rs/docs/guide/usage/linter và Rolldown https://rolldown.rs/
Trong 6 tháng triển khai vừa qua, tôi chỉ phải sửa tsconfig rất ít
Thường thì nếu không phải những thứ như antd6, echart, rendering engine hay thư viện không gian địa lý, tôi sẽ lấy package mới về, nhờ Claude dọn lại, đưa vào một hệ thống kiểu dữ liệu nghiêm ngặt và thống nhất, rồi chỉnh theo gu Vite, tsconfig, oxlint
Kết quả là giảm nhu cầu phải liên tục theo dõi các vấn đề phình to thư viện hay tấn công chuỗi cung ứng, đồng thời code dễ đọc và dễ sửa hơn
Trong 4 năm từ 2022 đến 2026, Vite đã tăng major version năm lần: 3 → 4 → 5 → 6 → 7 → 8
Lần nào cũng có breaking change và các developer phải migration, như vậy là quá nhiều. Trong khi nó cũng không tốt lên một cách ngoạn mục so với thời phiên bản 3
Tôi không muốn đưa mức độ thay đổi không cần thiết và hỗn loạn liên tục như vậy sang phần còn lại của toolchain phát triển
Nếu Vite+ rốt cuộc chỉ là bọc các công cụ hiện có bằng một giao diện dòng lệnh trừu tượng, thì để tạo ra hành vi mong muốn ta sẽ phải lần qua nhiều tầng gián tiếp hơn, nên tôi vẫn chưa lạc quan
Không nhớ có vấn đề lớn nào, và nhìn chung lần nào cũng đáng
Có vài breaking change, nhưng tương đối cô lập, và tốc độ cùng các cải tiến giữa các phiên bản này là khá lớn
Tôi tò mò bạn đã gặp loại lỗi vỡ nào
Các tính năng bổ sung liên quan đến server-side rendering là cải tiến lớn
Mong là mọi người thôi phàn nàn mãi về một vấn đề không tồn tại. Tôi còn nghi ngờ liệu họ có thật sự dùng các công cụ này không
Thật sự rất khó để theo kịp frontend, hoặc hệ sinh thái JavaScript
Nhớ thời còn làm việc với Laravel, và ước gì các công việc dùng Laravel trả lương cao hơn
Nhưng vẫn phải tiếp tục theo kịp, và kết quả có thể cũng không mấy hài lòng
Những thứ dùng trước đây vẫn hoạt động
Thật sự nhớ thời Laravel 6
Đây là cách đã hiệu quả với uv, nên nếu là một đội ngũ giỏi thì có lẽ cũng có thể làm điều tương tự trong JavaScript
Với tôi, đây là một đối tượng so sánh rất rõ ràng, và cũng là một bước tiến rất đáng hoan nghênh cho hệ sinh thái JavaScript
Nhờ uv mà làm việc với Python lại trở nên thú vị
Không rõ có thể dùng cho build Node như Vite không, hay chỉ dành riêng cho trình duyệt
Tuy vậy, mình đang dùng Vite cho server NestJS với
vite-plugin-nodemà không gặp vấn đề gìXem ví dụ tại https://github.com/leosuncin/nest-vite-example/blob/master/v...
Về cơ bản, chỉ cần giả vờ rằng bản thân là một thư viện
Trong trường hợp này không dùng Vite làm dev server, nhưng vẫn có lint, formatting, chạy tác vụ và caching
Lợi ích là gì? Có phải để obfuscate trong SEA không?
Không rõ cái này có kèm subscription không
Cứ thấy tên có dấu “+” là cảnh giác, và mặc nhiên nghĩ rằng sẽ có subscription đi kèm
Xem qua thì có vẻ không phải vậy
Giờ “$name+” đã ăn sâu như nghĩa là “dịch vụ subscription của $name”
Không rõ có thể dùng cùng Astro không