@codetofuture/alita-deploy
v0.1.3
Published
Build and upload Alita frontend assets to Aliyun OSS in one command.
Readme
alita-deploy
一个面向 Alita 前端项目的部署 CLI。它会读取目标项目的 package.json,执行构建,再把构建产物上传到阿里云 OSS。
上传支持两种方式:
sdk:使用ali-ossSDK 和显式 AK/SK 上传ossutil:用本机aliyun sts AssumeRole动态生成 STS Token,再通过内置的ossutilnpm 包上传
也支持本地快速部署到 Docker MinIO:
--local-minio:自动使用本机 Docker 启动/复用 MinIO,并上传构建产物--provider minio:上传到显式指定的 MinIO/S3 兼容服务
安装
npm install -g alita-deploy本地调试也可以直接:
npm link最小用法
alita-deploy /path/to/alita-ui-interactive \
--env pre \
--oss-region oss-cn-hangzhou \
--oss-bucket your-bucket \
--oss-key-id your-key-id \
--oss-key-secret your-key-secret使用 aliyun + ossutil 动态上传
前置条件:
- 本机已安装并登录/配置
aliyunCLI - 当前 aliyun 身份有权限
sts:AssumeRole - RAM Role 本身有目标 bucket/prefix 的 OSS 写入权限
export OSS_STS_ROLE_ARN='acs:ram::<account_id>:role/<role_name>'
alita-deploy /path/to/alita-ui-course \
--env pre检测到 OSS_STS_ROLE_ARN 后,CLI 会自动切到 ossutil 上传模式;不需要额外传 --upload-tool ossutil,也不需要额外安装系统级 ossutil。如果只是上传已有构建产物,可以继续加 --skip-build --asset-dir /path/to/build。
如果目标项目的 package.json 里有类似:
{
"environments": {
"pre": {
"publicUrl": "https://alita-edu-bucket.oss-cn-hangzhou.aliyuncs.com"
}
}
}CLI 会自动推导:
- bucket:
alita-edu-bucket - endpoint:
oss-cn-hangzhou.aliyuncs.com - prefix:
<package-name>/<env>-<yyyyMMddHHmmss>/
也可以显式覆盖:
alita-deploy /path/to/app \
--env pre \
--upload-tool ossutil \
--oss-bucket your-bucket \
--oss-endpoint oss-cn-hangzhou.aliyuncs.com \
--oss-role-arn acs:ram::<account_id>:role/<role_name> \
--oss-role-session-name alita-deploy-local \
--oss-sts-duration 3600CLI 默认行为:
- 优先执行目标项目的
build:<env>,例如build:pre - 如果没有
build:<env>,回退到build - 默认上传目录是
build/ - 默认上传路径是
<package-name>/<env>-<yyyyMMddHHmmss>/ - 如果目标项目
package.json里存在environments.<env>.publicUrl,会自动生成:PUBLIC_URL=<publicUrl>/<package-name>/<env>-<yyyyMMddHHmmss> - 上传完成后会打印可直接用于发布的
index.html完整地址
本地 Docker MinIO 快速部署
如果本机有 Docker,可以直接把微前端构建产物发布到本地 MinIO:
alita-deploy /path/to/app --local-minio默认行为:
- 自动启动或复用容器:
alita-minio - MinIO API:
http://127.0.0.1:9000 - MinIO 控制台:
http://127.0.0.1:9001 - bucket:
alita-micro-apps - access key / secret key:
minioadmin/minioadmin - 上传路径:
<package-name>/<env>-<yyyyMMddHHmmss>/ - 构建时注入:
PUBLIC_URL=http://127.0.0.1:9000/alita-micro-apps/<package-name>/<env>-<yyyyMMddHHmmss>
只上传已有构建产物:
alita-deploy /path/to/app \
--local-minio \
--skip-build \
--asset-dir /path/to/app/build连接已有 MinIO,不让 CLI 管 Docker:
alita-deploy /path/to/app \
--provider minio \
--no-minio-docker \
--minio-endpoint http://127.0.0.1:9000 \
--minio-bucket alita-micro-apps \
--minio-access-key minioadmin \
--minio-secret-key minioadmin上传前 CLI 会确保 bucket 存在,并设置公共只读策略,方便浏览器直接加载微前端静态资源。
通过环境变量传参
export OSS_REGION=oss-cn-hangzhou
export OSS_BUCKET=your-bucket
export OSS_ACCESS_KEY_ID=your-key-id
export OSS_ACCESS_KEY_SECRET=your-key-secret
alita-deploy /path/to/app --env pre使用 aliyun + ossutil 时也可以通过环境变量传参:
export OSS_STS_ROLE_ARN='acs:ram::<account_id>:role/<role_name>'
alita-deploy /path/to/app --env pre通过 env 文件传参
.env.deploy
OSS_REGION=oss-cn-hangzhou
OSS_BUCKET=your-bucket
OSS_ACCESS_KEY_ID=your-key-id
OSS_ACCESS_KEY_SECRET=your-key-secret
OSS_CDN_BASE_URL=https://static.example.com执行:
alita-deploy /path/to/app --env pre --env-file .env.deploy常用参数
alita-deploy <projectDir> \
--env pre \
--prefix alita-ui-interactive/0.1.0-pre.01/ \
--base-public-url https://static.example.com \
--output-dir build \
--concurrency 16仅构建或仅上传
alita-deploy /path/to/app --env pre --skip-upload
alita-deploy /path/to/app --skip-build --env-file .env.deployDry Run
alita-deploy /path/to/app --env pre --dry-run