---
title: Installation
description: 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.

```package-install
npm install files-sdk
```

The 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:

```package-install
files-sdk @aws-sdk/client-s3 @aws-sdk/s3-presigned-post @aws-sdk/s3-request-presigner
```

The 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](/adapters/s3) list the exact packages for each provider, and the [provider catalog](/providers) 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](/usage) to construct a `Files` instance and run the core methods.
