/payload-cloud-storage-vercel-adapter

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

Primary LanguageTypeScriptMIT LicenseMIT

Version Issues Pulls Codecov MIT License


header-light

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

$ npm install payload-cloud-storage-vercel-adapter
$ yarn add payload-cloud-storage-vercel-adapter
$ 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.

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 for changes to documentation, changelog generation, and release management.

Making a Pull Request

  1. Fork the project and clone your fork:
gh repo fork --clone
  1. Create your feature branch:
git checkout -b feature/AmazingFeature
  1. Commit your changes:
git commit -m 'Add some AmazingFeature'
  1. Use the changeset cli to create a detailed description of your changes.
yarn changeset

This will be used to generate a changelog when we publish an update. Learn more about Changeset.

  1. Push branch and open a Pull Request
gh pr create

(back to top)

📜 License

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

(back to top)

📫 Contact

Jarvis Prestidge - jarvisprestidge@gmail.com

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

(back to top)