Installation
Install files-sdk and the optional peer dependencies for the adapter you're using - nothing else is bundled.
files-sdk itself is small - one runtime dependency (commander, for the CLI) behind a tree of subpath exports. Install the package, then add the peer dependencies for the adapter you're wiring up. Anything you don't import is never bundled.
npm install files-sdkThe package ships its own TypeScript types, so there's no @types/files-sdk to chase down. It's published as ESM only ("type": "module") and targets modern runtimes - Node 18+ and Bun. From a CommonJS file, reach it with a dynamic import().
Adapter peer dependencies
Adapters are subpath exports - files-sdk/s3, files-sdk/r2, files-sdk/vercel-blob, and so on - and each one's provider SDK is an optional peer dependency, loaded lazily on first use. The SDK you don't import is never bundled, so both install size and cold-start cost stay proportional to the providers you actually wire up.
Install the peer deps for your adapter alongside the SDK. For S3 - and every S3-compatible store, since R2 over HTTP, MinIO, Backblaze, Wasabi, DigitalOcean Spaces, and the rest all wrap the same client:
npm install files-sdk @aws-sdk/client-s3 @aws-sdk/s3-presigned-post @aws-sdk/s3-request-presignerThe shape is the same for every adapter, only the packages change: Google Cloud Storage adds @google-cloud/storage and google-auth-library; Azure adds @azure/storage-blob, @azure/core-auth, and @azure/identity; Vercel Blob needs only @vercel/blob. A few adapters need no extra packages at all - files-sdk/fs and files-sdk/bun-s3 use primitives the runtime already provides.
The per-adapter docs list the exact packages for each provider, and the provider catalog exposes the same data programmatically (peerDeps) if you're generating install commands or building a config UI.
Missing a peer dependency?
Import an adapter without its peer installed and Node throws ERR_MODULE_NOT_FOUND naming the package that's missing - the SDK doesn't vendor or shim provider clients, so the failure is loud and specific rather than a silent fallback. Install the named package and the import resolves.
Once your adapter's packages are in place, head to Usage to construct a Files instance and run the core methods.