Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/syhily/astro-uploader
An uploader for uploading the Astro generated files through the S3 API.
https://github.com/syhily/astro-uploader
astro opendal s3
Last synced: 2 months ago
JSON representation
An uploader for uploading the Astro generated files through the S3 API.
- Host: GitHub
- URL: https://github.com/syhily/astro-uploader
- Owner: syhily
- License: mit
- Created: 2024-06-27T18:35:29.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-08-05T12:00:46.000Z (6 months ago)
- Last Synced: 2024-11-15T20:31:45.325Z (3 months ago)
- Topics: astro, opendal, s3
- Language: TypeScript
- Homepage:
- Size: 190 KB
- Stars: 11
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Astro Uploader
A uploader for uploading the Astro generated files through the S3 API.
This uploader is based on the [Apache OpenDAL™](https://github.com/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
```bash
# Use npm
npm install -D astro-uploader# Use pnpm
pnpm add -D astro-uploader# Use yarn
yarn add -D astro-uploader
``````ts
// 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.
```ts
export default defineConfig({
vite: {
// Add this for avoiding the needless import optimize in Vite.
optimizeDeps: { exclude: ['opendal'] },
},
});
```## Options
```ts
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
};
```