引入
import {
DeployPagesOptions,
DeployPagesResult,
normalizeCname,
toFileEntries,
readFileContent,
splitIntoBatches,
request,
checkSiteExists,
listRemoteFiles,
matchPrefix,
normalizeCleanPrefix,
deleteRemoteFiles,
deployPages
} from 't-comm';
// 不支持 tree-shaking 的项目
import {
DeployPagesOptions,
DeployPagesResult,
normalizeCname,
toFileEntries,
readFileContent,
splitIntoBatches,
request,
checkSiteExists,
listRemoteFiles,
matchPrefix,
normalizeCleanPrefix,
deleteRemoteFiles,
deployPages
} from 't-comm/lib/deploy-pages/index';
// 只支持 ESM 的项目
import {
DeployPagesOptions,
DeployPagesResult,
normalizeCname,
toFileEntries,
readFileContent,
splitIntoBatches,
request,
checkSiteExists,
listRemoteFiles,
matchPrefix,
normalizeCleanPrefix,
deleteRemoteFiles,
deployPages
} from 't-comm/es/deploy-pages/index';DeployPagesOptions
描述:部署配置选项
参数:
DeployPagesOptions.cname:string.directory:string.apiKey:string.visibility:'public'|'tof'|'git'|'whitelist'.description:string.dryRun:boolean.cleanBeforeDeploy:boolean.cleanPrefix:string|Array
deployPagesOptions.cname : string
域名,如 t-comm.pages.woa.com 或简写 t-comm
Kind: instance property of DeployPagesOptions
deployPagesOptions.directory : string
要部署的本地目录路径
Kind: instance property of DeployPagesOptions
deployPagesOptions.apiKey : string
API Key,不传则从环境变量 OA_PAGES_API_KEY 获取
Kind: instance property of DeployPagesOptions
Optional:
deployPagesOptions.visibility : 'public' | 'tof' | 'git' | 'whitelist'
访问权限:public(免登录) | tof(需登录) | git(仅 git 成员) | whitelist(白名单)。新建网站默认 whitelist
Kind: instance property of DeployPagesOptions
Optional:
deployPagesOptions.description : string
网站描述(最多 100 个字)
Kind: instance property of DeployPagesOptions
Optional:
deployPagesOptions.dryRun : boolean
仅预览,不实际上传
Kind: instance property of DeployPagesOptions
Optional:
deployPagesOptions.cleanBeforeDeploy : boolean
部署前是否清理远程已有文件。 适用于历史文件过多导致后续上传失败的场景。 默认 false。
Kind: instance property of DeployPagesOptions
Optional:
deployPagesOptions.cleanPrefix : string | Array
仅清理匹配前缀的远程文件(可传单个或多个前缀)。 仅在 cleanBeforeDeploy 为 true 时生效,未传则清理全部远程文件。 例如 'assets/' 仅清理 assets 目录下的文件。
Kind: instance property of DeployPagesOptions
Optional:
DeployPagesResult
描述:部署结果
参数:
DeployPagesResult.success:boolean.url:string.adminUrl:string.cname:string.totalFiles:number.totalBatches:number.deletedFiles:number.error:string
deployPagesResult.success : boolean
是否成功
Kind: instance property of DeployPagesResult
deployPagesResult.url : string
网站 URL
Kind: instance property of DeployPagesResult
deployPagesResult.adminUrl : string
管理页面 URL
Kind: instance property of DeployPagesResult
deployPagesResult.cname : string
完整域名
Kind: instance property of DeployPagesResult
deployPagesResult.totalFiles : number
文件总数
Kind: instance property of DeployPagesResult
deployPagesResult.totalBatches : number
批次数
Kind: instance property of DeployPagesResult
deployPagesResult.deletedFiles : number
部署前清理的远程文件数(仅在 cleanBeforeDeploy=true 时有意义)
Kind: instance property of DeployPagesResult
Optional:
deployPagesResult.error : string
错误信息(失败时)
Kind: instance property of DeployPagesResult
Optional:
normalizeCname()
描述:补全域名后缀
参数:
toFileEntries()
描述:将 collectFilesSync 返回的绝对路径列表转换为 FileEntry 列表
参数:
readFileContent()
描述:读取文件内容,二进制文件自动 base64 编码
参数:
splitIntoBatches()
描述:将文件列表按大小分批
参数:
request()
描述:发送请求到 OA Pages API
参数:
checkSiteExists()
描述:检查网站是否已存在
参数:
listRemoteFiles()
描述:获取远程网站的所有文件路径
参数:
matchPrefix()
描述:判断文件路径是否匹配任一前缀
参数:
normalizeCleanPrefix()
描述:将 cleanPrefix 选项归一化为数组
参数:
deleteRemoteFiles()
描述:删除远程网站文件,自动按批次发送,避免单次请求过大
参数:
deployPages(options)
描述:部署本地目录到 OA Pages
参数:
| 参数名 | 描述 |
|---|---|
| options | 部署配置 |
返回: 部署结果
示例
import { deployPages } from 't-comm';
// 基本用法
const result = await deployPages({
cname: 't-comm.pages.woa.com',
directory: 'docs/.vitepress/dist',
visibility: 'public',
});
// 传入 API Key(不依赖环境变量)
const result = await deployPages({
cname: 't-comm',
directory: './dist',
apiKey: 'oa-pages-key-xxxxxxxx',
visibility: 'tof',
description: '我的网站',
});
// 部署前先清理远程历史文件(避免容量超限上传失败)
await deployPages({
cname: 't-comm.pages.woa.com',
directory: './dist',
cleanBeforeDeploy: true,
});
// 仅清理 assets/ 前缀下的文件,再上传
await deployPages({
cname: 't-comm.pages.woa.com',
directory: './dist',
cleanBeforeDeploy: true,
cleanPrefix: 'assets/',
});