@dcl/cdn-uploader
v1.5.0
Published
base component
Readme
cdn-uploader
This tool upload files and their compressed variants (if possible) into an S3 Bucket.
Usage
AWS_DEFAULT_REGION="us-east-1" \
AWS_ACCESS_KEY_ID="..." \
AWS_SECRET_ACCESS_KEY="..." \
npx @dcl/cdn-uploader@next \
--bucket full-bucket-name \
--local-folder $(pwd)/dist \
--bucket-folder 0.0.1-20210701 \
[--dry-run]
[--immutable]
[--skip-repeated]
[--concurrency 10]
[--config cdn.yml]
[--variant uncompressed]
[--variant gzip]
[--variant brotli]Configuration file example:
matches:
# Prevent files to be uploaded
- match: "secrets/**/*"
ignore: true
# Set Cache-Control as `immutable` for a year for all files inside the `static` folder
- match: "static/**/*"
immutable: true
# Set Content-Type as `application/json` for all files inside the `api` folder
- match: "api/**/*"
contentType: "application/json"
# Set all pdf files as attachment (indicating it should be downloaded)
- match: "**/*.pdf"
contentDisposition: "attachment"
# Ignores already uploaded files (by uploadd key + content type)
- match: "ipfs/*"
skipRepeated: true
# usually used with 'immutable: true'
# Upload only the compressed variants of data files
- match: "**/*.data"
variants:
- gzip
- brotli
# Prevent the upload of the compressed variant of zip files
- match: "**/*.zip"
variants:
- uncompressed
# Set Cache-Control for all files that not have an `immutable` or `cacheControl` key
- match: "**/*"
cacheControl: "public, max-age=0, must-revalidate"If a file match with multiple configurations those that matched first will be applied, for example for the following configuration file:
matches:
# Set Cache-Control as `immutable` for a year for all files inside the `static` folder
- match: "static/**/*"
cacheControl: "public, max-age=31536000, immutable"
# Set Cache-Control for all files that not have an `immutable` or `cacheControl` key
- match: "**/*"
cacheControl: "public, max-age=0, must-revalidate"
contentType: "application/json"Any file inside the static directory will get:
Cache-Control: public, max-age=31536000, immutableContent-Type: application/json
And the remaining files
Cache-Control: public, max-age=0, must-revalidateContent-Type: application/json
The options --dry-run, --immutable and --concurrency can be defined inside the configuration file as follow:
dryRun: false
immutable: false
concurrency: 100
variants:
- uncompressed
- gzip
- brotli
matches:
# ...