2024-06-28 03:06:38 +08:00
# Astro Uploader
2024-06-28 02:35:29 +08:00
A uploader for uploading the Astro generated files through the S3 API.
2024-07-08 20:48:41 +08:00
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.
2024-06-28 03:06:38 +08:00
## 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,
}),
],
})
```
2024-07-08 22:29:15 +08:00
### 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'] },
},
});
```
2024-06-28 03:06:38 +08:00
## 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;
2024-07-08 20:48:41 +08:00
// 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 >
2024-06-28 03:06:38 +08:00
};
```