An uploader for uploading the Astro generated files through the S3 API.
Go to file
2024-07-08 22:29:15 +08:00
src fix: improve the uploading speed by reducing the API call. 2024-07-08 22:29:15 +08:00
.gitignore Initial commit 2024-06-28 02:35:29 +08:00
biome.json feat: add the root path fix. 2024-07-08 20:56:00 +08:00
build.config.ts feat: add the root path fix. 2024-07-08 20:56:00 +08:00
LICENSE Initial commit 2024-06-28 02:35:29 +08:00
package-lock.json feat: use opendal for uploading. 2024-07-08 20:50:15 +08:00
package.json fix: add the override options. 2024-07-08 21:06:18 +08:00
README.md fix: improve the uploading speed by reducing the API call. 2024-07-08 22:29:15 +08:00
tsconfig.json feat: initial version. 2024-06-28 03:00:39 +08:00

Astro Uploader

A uploader for uploading the Astro generated files through the S3 API. This uploader is based on the Apache OpenDAL™. If you have any issues in uploading, it could be the issues in OpenDAL, remember to upgrade the OpenDAL to the latest version.

Installation

# Use npm
npm install -D astro-uploader

# Use pnpm
pnpm add -D astro-uploader

# Use yarn
yarn add -D astro-uploader
// astro.config.ts
import { defineConfig } from 'astro/config'
import { uploader, type Options } from 'astro-uploader'

export default defineConfig({
  integrations: [
    uploader({
      paths: ['images', 'og', 'cats'],
      endpoint: process.env.S3_ENDPOINT,
      bucket: process.env.S3_BUCKET as string,
      accessKey: process.env.S3_ACCESS_KEY as string,
      secretAccessKey: process.env.S3_SECRET_ACCESS_KEY as string,
    }),
  ],
})

Vite Dependency Optimization

If you have issues like '' in using this tool. Remember to change your Astro configuration for add the code shown below.

export default defineConfig({
  vite: {
    // Add this for avoiding the needless import optimize in Vite.
    optimizeDeps: { exclude: ['opendal'] },
  },
});

Options

type Options = {
  // The directories that you want to upload to S3.
  paths: string[];
  // Whether to keep the original files after uploading.
  keep?: boolean;
  // Whether to override the existing files on S3.
  // It will be override only when the content-length don't match the file size by default.
  override?: boolean;
  // The S3 region, set it if you use AWS S3 service.
  region?: string;
  // The endpoint, set it if you use 3rd-party S3 service.
  endpoint?: string;
  // The name of the bucket.
  bucket: string;
  // The root directory you want to upload files.
  root?: string;
  // The access key id.
  accessKey: string;
  // The secret access key.
  secretAccessKey: string;
  // All the methods in https://docs.rs/opendal/latest/opendal/services/struct.S3.html#implementations can be treated as an extra option.
  extraOptions?: Record<string, string>
};