dist_upload_any
v0.1.8
Published
Deploy dist directory to AWS S3, Alibaba OSS, Tencent COS, MinIO and more
Maintainers
Readme
dist_upload_any
Deploy dist directory to AWS S3, Alibaba OSS, Tencent COS, MinIO and more with incremental upload, multi-provider support, and intelligent sync.
Features
- 🚀 Incremental Upload - Upload only changed files based on MD5/ETag comparison
- 🌐 Multi-Provider Support - AWS S3, Alibaba OSS, Tencent COS, MinIO
- ⚡ Concurrency Control - Configurable concurrency with retry mechanism
- 🔧 Flexible Configuration - YAML/JSON/TS config with multi-environment support
- 🔒 Safe Delete - Bounded delete within target prefix
- 👀 Dry-Run Preview - Preview changes before actual upload
Install
# global
npm install -g dist_upload_any
# or per-project
npm install --save-dev dist_upload_anyRequires Node.js 18+.
Quick Start
- Create a config file:
dist_upload_any init- Edit
.dist_upload_any.yaml:
defaults:
source: dist
concurrency: 8
environments:
production:
provider: s3
bucket: my-bucket
region: us-east-1
prefix: dist/
minio:
provider: minio
endpoint: http://192.168.4.101:9000
bucket: demo1
prefix: app/- Deploy:
dist_upload_any deploy --env productionCLI Commands
dist_upload_any init
Create configuration file template.
dist_upload_any init # YAML format
dist_upload_any init --format json # JSON formatdist_upload_any deploy
Deploy files to object storage.
dist_upload_any deploy # Use default config
dist_upload_any deploy --env production # Use specific environment
dist_upload_any deploy --dry-run # Preview mode
dist_upload_any deploy --sync-delete # Enable remote delete
dist_upload_any deploy --concurrency 16 # Custom concurrencydist_upload_any list
List remote files.
dist_upload_any list --env productiondist_upload_any validate
Validate configuration file.
dist_upload_any validateConfiguration
Multi-Environment
defaults:
source: dist
concurrency: 8
retryTimes: 3
ignore:
- "*.map"
- "*.d.ts"
environments:
production:
provider: s3
bucket: my-bucket
region: us-east-1
prefix: dist/
staging:
provider: oss
bucket: staging-bucket
region: oss-cn-hangzhou
accessKeyId: ${OSS_ACCESS_KEY_ID}
accessKeySecret: ${OSS_ACCESS_KEY_SECRET}
minio:
provider: minio
endpoint: http://192.168.4.101:9000
bucket: demo1
prefix: app/
forcePathStyle: trueSupported Providers
| Provider | SDK | Features |
|---------|-----|----------|
| AWS S3 | @aws-sdk/client-s3 | ETag = MD5, multipart support |
| MinIO | @aws-sdk/client-s3 + forcePathStyle: true | S3-compatible, private deployment |
| Alibaba OSS | ali-oss | Resume upload, custom domain |
| Tencent COS | cos-nodejs-sdk-v5 | Multipart upload |
Development
npm install
npm run build # Build project
npm test # Run tests
npm run lint # Lint code
npm run format # Format codeLicense
MIT
