This plugin will upload all built assets to s3.
This package was heavily inspired by webpack-s3-plugin and also Laravel vapor's asset deployment.
$ npm i vite-plugin-s3
$ yarn add vite-plugin-s3
import viteS3 from 'vite-plugin-s3';
export default defineConfig({
plugins: [
viteS3({
s3Options: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: 'us-east-1'
},
s3UploadOptions: {
Bucket: 'dist-cdn',
},
}),
]
});
viteS3({
exclude: /.*\.img/,
include: /.*\.js$/,
uploadEnabled: !!process.env.UPLOAD_ENABLED,
s3Options: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: 'us-east-1'
},
s3UploadOptions: {
Bucket: 'dist-cdn',
},
basePath: 'production',
})
Option | Type | Default | Description |
---|---|---|---|
uploadEnabled |
Boolean |
true |
This setting can be used to disable or enable the uploading of assets |
exclude |
String |
A Regex Pattern to match for excluded content | |
include |
String |
A Regex Pattern to match for included content. Behaves the same as exclude |
|
s3Options |
Object |
Upload options for s3Config | |
s3UploadOptions |
Object |
Upload options for putObject | |
basePath |
String |
The root namespace of uploaded files on S3 | |
hasher |
Function |
Customize the behavior of how the manifest file gets hashed | |
onFinished |
Function |
This callback will be invoked after all operations are complete. The parameters passed are the instance of the s3 client used for uploading, the plugin config, and the manifest file hash |
$ UPLOAD_ENABLED=true AWS_ACCESS_KEY_ID=******* AWS_SECRET_ACCESS_KEY=******** yarn prod