Kod editörü
13 dil ailesi için renklendirme, bul ve değiştir, satıra git, akıllı girinti, Ctrl+S ile kaydetme. Kaydetmeden önce eski hal sürüm geçmişine girer.
Açık kaynak · MIT · v0.2
React uygulamanıza tek bileşenle gelen, gerçek bir masaüstü dosya yöneticisi kadar hızlı ve klavye dostu bir arayüz.
Arkada sunucu yok: @thefinder/core motorunun kendisi bu sayfada, bellekte tutulan bir sürücüyle çalışıyor. Yenileyince her şey baştan
başlar.
theFinder bir React bileşeni, bir CSS dosyası ve tek bir API ucu. Arayüz hiçbir UI kütüphanesine bağlı değil. Sunucu tarafı Web standardı Request → Response üzerine kurulu, bu yüzden Next.js, Bun, Node, Express, Fastify, Koa ve Hono ile aynı kodla çalışıyor. Dosyalar yerel diskte, S3'te ya da ikisinde birden duruyor. Çekirdeğin çalışma zamanı bağımlılığı: sıfır.
Sanal liste
Sürüm geçmişi
Çöp kutusu
Silinen öğeler volume içindeki .tf-trash klasöründe 30 gün bekler. Yerel diskte de S3'te de.
S3, R2, MinIO
s3Driver({
bucket: "my-bucket",
region: "auto",
endpoint: "https://…r2.cloudflarestorage.com",
})
SigV4 imzası Web Crypto ile. Edge runtime'da da çalışır.
Klavye
Erişilebilirlik
Next.js
output: "standalone" dahil.Kement seçimi, hızlı bakış, kes-yapıştır, görsel editörü, sanal liste ve elFinder karşılaştırması, sessiz bir kısa filmde.
Motor tek bir fonksiyon: finder.handler(request) bir Request alır, bir Response döner. Bun, Hono ve Next.js
bunu olduğu gibi kullanır; Express, Fastify ve Koa için ince adaptörler hazır.
Yüklemeler parça parça gelir ve sunucu yüklemeler arasında durum tutmaz. Gövde limitine takılmaz, serverless'ta da çalışır.
app/api/files/route.ts
import {
createTheFinder, createNextRoutes, localDriver, uploadsDir,
} from "@thefinder/next";
const finder = createTheFinder({
volumes: [{
id: "uploads",
driver: localDriver({ root: uploadsDir() }),
url: "/uploads",
}],
});
export const runtime = "nodejs";
export const { GET, POST } = createNextRoutes(finder);
server.ts
const driver = localDriver({ root: "./uploads" });
const finder = createTheFinder({
volumes: [{ id: "files", driver, url: "/uploads" }],
});
Bun.serve({
routes: {
"/api/files": finder.handler,
"/uploads/*": createFileServer({ driver, prefix: "/uploads" }),
},
});
server.mjs
import { toExpress } from "@thefinder/core/node";
app.all("/api/files", toExpress(finder.handler));
app.get("/uploads/*", toExpress(
createFileServer({ driver, prefix: "/uploads" }),
));
// express.json() önce çalışmış olsa bile sorun yok:
// adaptör okunmuş gövdeyi yeniden oluşturur.
server.ts
import { toFastify } from "@thefinder/core/node";
fastify.register(toFastify(finder.handler), { prefix: "/api/files" });
// Eklenti kendi kapsamında gövde ayrıştırmayı kapatır.
server.ts
import { toKoa } from "@thefinder/core/node";
router.all("/api/files", toKoa(finder.handler));
index.ts
// Adaptör gerekmez: Hono zaten Web standardı Request kullanır.
app.all("/api/files", (c) => finder.handler(c.req.raw));
Her depolama bir volume. Kenar çubuğunda yan yana görünürler; aralarında kopyalayıp taşıyabilirsiniz.
StorageDriver arayüzündeki dokuz metodu uygulamak yeterli..tf-* klasörlerinde durur.Monaco yok, CodeMirror yok, CDN'den yüklenen bir şey yok. Editörler paketin kendisinde.
13 dil ailesi için renklendirme, bul ve değiştir, satıra git, akıllı girinti, Ctrl+S ile kaydetme. Kaydetmeden önce eski hal sürüm geçmişine girer.
Yan yana önizlemeli düzenleme. Ham HTML işlenmez, bağlantılar güvenli şemalarla sınırlı; güvenilmeyen bir dosyayı açmak zararsızdır.
Kırp, döndür, çevir, yeniden boyutlandır; biçim ve kalite seç. Seçili görselleri toplu olarak WebP ya da AVIF'e çevir.
Space ile görsel, video, ses, PDF, kod ve Markdown önizlemesi. Video ileri sarma Range istekleriyle çalışır.
useFilePicker bir Promise döner: formunuza “Dosya seç” düğmesi eklemek üç satır. React dışında openFilePicker.
CKEditor 5 eklentisi ve CKEditor 4 connector'ı. CKFinder'ın işini görür: araç çubuğu düğmesi, yapıştırılan görsellerin yüklenmesi.
Bir dosya yöneticisi sunucunuza yazma izni demektir. theFinder bunu ilk günden ciddiye alır.
.. içeren yollar çözülmeye çalışılmaz, reddedilir. Kök dışını gösteren symlink'ler gizlenir.x-thefinder başlığını taşımak zorunda.authorize. 401, 403 ya da istek bazında salt okunur mod.readOnly, yol bazında permission, uzantı listeleri ve boyut sınırı.elFinder, web dosya yöneticileri denince akla gelen ilk isim ve on beş yılı aşkın süredir sahada. theFinder aynı işi bugünün yığınıyla yeniden düşünüyor. İkisi de iyi araçlar; hangisinin size uyduğu, projenizin nasıl kurulduğuna bağlı.
@layer, container query)
jQuery ve jQuery UI eklentisi
Request → Response. Node, Bun, Deno, edge.
Resmî bağlayıcı PHP. Diğer diller için topluluk bağlayıcıları.
react (peer).
İstemcide jQuery ve jQuery UI
@thefinder/core/client)
Tek uç, elFinder protokolü (cmd=open…)
StorageDriver ile yazılabilir
Dahili sürücüler
messages ile ek dil
30'dan fazla dil
useFilePicker, openFilePicker (Promise)
getFileCallback
elFinder bilgileri 2.1 serisinin belgelerine göre derlendi. Yanlış ya da eskimiş bir satır görürseniz bir issue açın.
npm i @thefinder/core @thefinder/react @thefinder/next
@thefinder/core