需自行实现或部署后端 driver 接口,否则无法读写文件;官方即插即用的后端只有 PHP 包,其他语言需按 OpenAPI 规范自行实现;依赖 Vue 3+,旧版 Vue 不适用
vuefinder
n1crackMIT活跃维护面向 Vue 3 的轻量文件管理器组件,支持文件浏览、预览与整理,方便在后台或管理系统中快速集成文件管理能力。
A sleek, developer-friendly file manager for Vue — organize, preview, and manage files with ease.
npm i vuefinderREADME 未说明,作为前端 Vue 组件在浏览器中运行,无显存或 GPU 要求
Vue 3 文件管理器组件,帮你快速搭出带预览和上传的云盘界面
面向 Vue 3 的轻量文件管理器组件,支持文件浏览、预览与整理,方便在后台或管理系统中快速集成文件管理能力。
核心能力
- 通过自定义 driver 对接任意后端 HTTP 接口
- 内置图片裁剪、缩略图懒加载与文本代码预览
- 集成 Uppy 上传与 CSV 解析等常用文件操作
- 后端无关,官方提供 PHP 包与 OpenAPI 规范
容易踩的坑
- 4.8.0最新正式版2026-10-31 · 2026-10-31 16:28 UTC
- feat: optional
DirEntry.thumbnailUrlfor lightweight grid thumbnails, falling back topreviewUrlthenadapter.getPreviewUrl()(#261, closes #260, thanks @royoky)
- feat: optional
- 4.7.72026-10-29 · 2026-10-29 19:53 UTC
查看更新说明
Fixes
- File sizes are shown with three significant digits instead of being rounded to a whole number —
1.5 KiBinstead of2 KiB,1.46 MiBinstead of1 MiB. Values that round up to the base now carry over to the next unit (1 MiB, not1024 KiB). Applies to both binary andmetricUnitsformatting. (#258, thanks @feeva)
Dependencies
- Runtime:
@tanstack/vue-query5.105.0,@uppy/core6.3.0,@uppy/locales5.3.1, overlayscrollbars 2.17.0, vue 3.5.44 (#256, #257) - Dev: vite 8.3.5, vitest 5.0.5, cypress 16.2.1, oxlint 1.90.0, jsdom 30.1.3, vue-tsc 3.3.14, vitepress 2.0.0-alpha.21, npm-run-all2 9.0.4
- Lockfile refreshed to fix dev-only advisories in
follow-redirects,qs,systeminformationandundici(all transitive, never shipped in the published bundle).npm auditis clean.
Full Changelog: https://github.com/n1crack/vuefinder/compare/4.7.6...4.7.7
- File sizes are shown with three significant digits instead of being rounded to a whole number —
- 4.7.62026-09-17 · 2026-09-17 09:20 UTC
查看更新说明
A maintenance release: no runtime behaviour changes, only dependency updates and a test-suite fix.
Dependencies
- vitest 4.1.11 → 5.0.1
- Every other dependency refreshed to the latest version inside its existing range — vite 8.3.0, vue 3.5.43, cypress 16.1.0, oxlint 1.83.0, jsdom 30.1.0,
@tanstack/vue-query5.103.1,@vue/test-utils2.5.1,@vitejs/plugin-vue6.0.9,@uppy/core6.0.1,@viselect/vanilla3.10.1, prettier 3.9.7, vite-svg-loader 5.1.3, nanostores 1.5.3 qsoverride raised to^6.16.0: 6.15.3, reached throughcypress→@cypress/request, is affected by GHSA-x5fp-wj9c-mxmx and GHSA-4mjr-xmp4-gh2g.npm auditis clean again. Dev-only, it never shipped in the published bundle.
CI
vitest 5 brings jsdom 30.1, where
window.localStorageis an accessor with only a getter, so the plain assignment used to install the storage mock inVuefinder.spec.tsthrew and took the whole suite down. The mock is now installed withObject.defineProperty, matching howmatchMediais mocked in the same file.Full Changelog: https://github.com/n1crack/vuefinder/compare/4.7.5...4.7.6
- 4.7.52026-08-30 · 2026-08-30 17:32 UTC
查看更新说明
Fixed
- uppy upgraded to v6.
@uppy/coreand@uppy/xhr-uploadnow sit on^6.0.0, bumped together —@uppy/xhr-upload@6peer-depends on a matching@uppy/coremajor, so the packages cannot move independently.@uppy/localesmoves to^5.2.0. - Removed the unused
@uppy/vuedependency. It was declared inpackage.jsonbut never imported anywhere in the source, and its v4 line pulls in@uppy/dashboard,@uppy/webcam,@uppy/status-barand@uppy/screen-captureas peers — none of which VueFinder uses. Dropping it removes four phantom peer requirements from installs.
No public API changed, and nothing in uppy's v6 breaking-change list touches VueFinder's surface: the removals there are
@uppy/utils,@uppy/store-default,@uppy/companion-clientand@uppy/provider-views(merged into@uppy/coresubpaths), a Companion websocket token change, andisTouchDevice. This should be a drop-in upgrade.Internal
- The upload flow now has real test coverage. Previously it had none — no unit tests, no e2e — so a uploader dependency bump could only be checked by hand. The new suite drives the actual
@uppy/coreand@uppy/xhr-uploadpackages throughRemoteDriver.configureUploaderand asserts the endpoint, thepathmeta, auth headers, the upload event lifecycle, network-error handling, andmaxFileSizeenforcement. dependabot.ymlnow groups@uppy/*across major, minor and patch updates, so future uppy majors arrive as a single installable PR instead of several mutually unresolvable ones.
Full Changelog: https://github.com/n1crack/vuefinder/compare/4.7.4...4.7.5
- uppy upgraded to v6.
- 4.7.42026-08-18 · 2026-08-18 05:41 UTC
查看更新说明
Maintenance release. No runtime changes to the published package — all updates are to tooling and devDependencies.
Fixed
- CI was failing because Prettier 3.9 changed its union type formatting; four source files are reformatted.
- The Dependabot config had an empty
package-ecosystem, left over from the scaffold template, so version updates never ran. It is now set tonpm, with routine minor/patch bumps grouped andgithub-actionstracked too. - Dropped a redundant
|| {}fallback in an object spread inRemoteDriver, caught by the new linter.
Changed
- ESLint replaced by oxlint. Linting is now configured through
.oxlintrc.jsonat thecorrectnesscategory, matching the previous rule scope. This removeseslint,@typescript-eslint/eslint-plugin,@typescript-eslint/parser,eslint-plugin-vue,eslint-config-prettierand@vue/eslint-config-typescript, and lifts thetypescript <6.1.0peer constraint that blocked future TypeScript upgrades. - Updated devDependencies:
@types/jsdom21 → 30,@types/node22 → 26,@vue/tsconfig0.8 → 0.9,jsdom27 → 30,npm-run-all28 → 9,prettier-plugin-tailwindcss0.7 → 0.8,start-server-and-test2 → 3, plus in-range refreshes.npm auditreports 0 vulnerabilities. - Replaced
__dirnamewithimport.meta.dirnameand added an explicit extension to thevite.configimport, so Vite's upcoming native config loader no longer warns.
Note on TypeScript 7
TypeScript 7 is not adopted yet. Its npm package ships only the native binary and
unstable/*APIs and exports no classic compiler API, sovue-tsccannot run against it. Since bothtype-checkandtype-gen(which emitsdist/types) depend onvue-tsc, TypeScript stays on 5.9 until vue-language-tools ships tsgo support.Full Changelog: https://github.com/n1crack/vuefinder/compare/4.7.3...4.7.4
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Vuefinder File Manager
About
A modern, customizable file manager component built for Vue.
Organize, preview, and manage your files through a beautiful, reactive interface — just like a native file explorer.
Easily integrate it into your app, connect to any storage (local, S3, etc.), and craft your own cloud experience with full control over uploads, search, and customization.
If you like it, please follow and ⭐ star on GitHub.
Demo
Live Demo - Explore Vuefinder's features and capabilities in action.
Installation
npm i vuefinder
For detailed installation instructions, configuration options, and usage examples, visit the documentation website.
Backend
You can use any backend language. VueFinder talks to your server through the driver you provide. A driver simply calls your HTTP endpoints and returns data in the expected shape. This keeps VueFinder backend-agnostic while giving you full control over auth, storage, and business rules.
Server libraries:
- PHP (recommended for plug‑and‑play): VueFinder Php
Infrastructure examples:
- Cloudflare R2 on Workers (TypeScript): r2-explorer-demo — serverless endpoints backed by R2 object storage
Data contracts are stable and designed to be simple to implement. If you use the PHP package, these endpoints are already provided. For other stacks, mirror the same responses and you're good to go.
The complete API specification is available as an OpenAPI 3.0 specification for easy integration and validation.
Older ecosystem libraries (for VueFinder 3.x and earlier):
- Python: Python WSGI
- Go: vuefinder-go
- Rust: vuefinder-rust
Collaboration
If you want to contribute to the project, please feel free to fork the repository and submit your changes as a pull request. Ensure that the changes you submit are applicable for general use rather than specific to your project.
Dependencies
Every dependency here was picked on purpose — best-in-class, fast, and as small as possible — so VueFinder stays lightweight in your bundle.
- Vue 3+
- vue-advanced-cropper : JavaScript image cropper
- viselect : Selection utility
- Uppy : Upload library
- vanilla-lazyload : lightweight and flexible lazy loading for thumbnails
- mitt : Tiny 200 byte functional event emitter / pubsub
- OverlayScrollbars : scrollbar plugin
- nanostores : A tiny state manager
- @nanostores/i18n : Internationalization backend for nanostores
- vue-sonner : Toast notification component
- @floating-ui/dom : Floating UI positioning library
- @tanstack/vue-query : fetching, caching, synchronizing and updating server state
- CodeMirror 6 : code editor for the built-in text/code preview
- Papa Parse : fast in-browser CSV parser
License
Copyright (c) 2018 Yusuf ÖZDEMİR, released under the MIT license