Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jarvisprestidge/payload-cloud-storage-vercel-adapter

A stop-gap solution for using Vercel Blob Storage with Payload CMS v3
https://github.com/jarvisprestidge/payload-cloud-storage-vercel-adapter

payload payload-cms payloadcms vercel vercel-blob

Last synced: about 2 months ago
JSON representation

A stop-gap solution for using Vercel Blob Storage with Payload CMS v3

Awesome Lists containing this project

README

        

[![Version][version-shield]][version-url]
[![Issues][issues-shield]][issues-url]
[![Pulls][pulls-shield]][pulls-url]
[![Codecov][codecov-shield]][codecov-url]
[![MIT License][license-shield]][license-url]



![header-light](https://github.com/JarvisPrestidge/payload-cloud-storage-vercel-adapter/assets/6669336/b06bd7cb-e9e0-405c-872d-92ecbf86ec63)


A stop-gap solution for using Vercel Blob Storage with Payload CMS v3




Report Bug
ยท
Request Feature



Made with TypeScript


> [!IMPORTANT]
> Only for use with Payload CMS v3 (currently in alpha).
>
> This package will be deprecated once the official Vercel Blob Storage adapter is released.


Table of Contents


  1. Installation

  2. Usage

  3. API

  4. Contributing

  5. License

  6. Contact

## ๐Ÿ’พ Installation

```bash
$ npm install payload-cloud-storage-vercel-adapter
```

```bash
$ yarn add payload-cloud-storage-vercel-adapter
```

```bash
$ pnpm add payload-cloud-storage-vercel-adapter
```

(back to top)

## ๐Ÿ”จ Usage

> [!NOTE]
> Requirements:
>
> - Payload v3

Add the plugin within your Payload config as follows, passing in your Vercel Blob Storage token and storeId, and optionally any upload options.

```typescript
import path from "path";
import { cloudStorage } from "@payloadcms/plugin-cloud-storage";
import { vercelBlobAdapter } from "payload-cloud-storage-vercel-adapter";
import { buildConfig } from "payload/config";

export default buildConfig({
plugins: [
cloudStorage({
collections: {
[Media.slug]: {
adapter: vercelBlobAdapter({
token: process.env.BLOB_READ_WRITE_TOKEN || "",
storeId: process.env.BLOB_STORE_ID || ""
}),
disableLocalStorage: true,
disablePayloadAccessControl: true
}
}
})
]
// The rest of your config goes here
});
```

## โš™๏ธ Plugin Configuration

This plugin allows for the following configuration options to be passed to the vercel package:

| Name | Type | Required | Description |
| ---------------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------- |
| `token` | string | Yes | Your Vercel API token. |
| `storeId` | string | Yes | The identifier of your Vercel storage. |
| `uploadOptions` | object | No | An object specifying options for uploads. |
| `uploadOptions.access` | string | No | Determines the access level for uploaded items. Default: `public`. |
| `uploadOptions.addRandomSuffix` | boolean | No | Indicates whether to add a random suffix to uploaded filenames. Default: `false`. |
| `uploadOptions.cacheControlMaxAge` | number | No | Specifies the maximum age for cache control headers (in seconds). Default: `31536000` (1 year). |

## โค๏ธ Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.

If you have a suggestion that would make this better, please fork the repo and create a pull request.
Don't forget to give the project a star! Thanks again!

### Tooling

- [Changeset](https://github.com/atlassian/changesets) for changes to documentation, changelog generation, and release management.

### Making a Pull Request

1. Fork the project and clone your fork:

```bash
gh repo fork --clone
```

2. Create your feature branch:

```bash
git checkout -b feature/AmazingFeature
```

3. Commit your changes:

```bash
git commit -m 'Add some AmazingFeature'
```

4. Use the changeset cli to create a detailed description of your changes.

```bash
yarn changeset
```

> This will be used to generate a changelog when we publish an update. [Learn more about Changeset](https://github.com/atlassian/changesets/tree/master/packages/cli).

5. Push branch and open a Pull Request

```bash
gh pr create
```

(back to top)

## ๐Ÿ“œ License

Distributed under the MIT License. See `LICENSE` for more information.

(back to top)

## ๐Ÿ“ซ Contact

Jarvis Prestidge - [email protected]

Project Link: [https://github.com/jarvisprestidge/payload-cloud-storage-vercel-adapter](https://github.com/jarvisprestidge/payload-cloud-storage-vercel-adapter)

(back to top)

[typescript-shield]: https://img.shields.io/badge/made%20with-typescript-%23007ACC?style=for-the-badge&link=https://www.typescriptlang.org "TypeScript (External Link)"
[issues-shield]: https://img.shields.io/github/issues/JarvisPrestidge/payload-cloud-storage-vercel-adapter.svg?style=for-the-badge
[issues-url]: https://github.com/JarvisPrestidge/payload-cloud-storage-vercel-adapter/issues
[pulls-shield]: https://img.shields.io/github/issues-pr/JarvisPrestidge/payload-cloud-storage-vercel-adapter.svg?style=for-the-badge
[pulls-url]: https://github.com/JarvisPrestidge/payload-cloud-storage-vercel-adapter/pulls
[license-shield]: https://img.shields.io/github/license/JarvisPrestidge/payload-cloud-storage-vercel-adapter.svg?style=for-the-badge
[license-url]: https://github.com/JarvisPrestidge/payload-cloud-storage-vercel-adapter/blob/master/LICENSE.txt
[codecov-shield]: https://img.shields.io/codecov/c/gh/JarvisPrestidge/payload-cloud-storage-vercel-adapter?style=for-the-badge
[codecov-url]: https://app.codecov.io/gh/JarvisPrestidge/payload-cloud-storage-vercel-adapter
[version-shield]: https://img.shields.io/github/package-json/v/jarvisprestidge/payload-cloud-storage-vercel-adapter?style=for-the-badge
[version-url]: https://www.npmjs.com/package/payload-cloud-storage-vercel-adapter
[check-icon]: https://github.com/bjss/eng-blocks-frontend-exemplar/assets/6669336/5c41ecfa-51c8-475f-964d-af733eb70d51