yx-oss-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,255 @@
1
+ # OSS CLI
2
+
3
+ 阿里云 OSS 命令行工具,支持文件上传、删除、同步等操作,适用于 CI/CD 流程和日常开发。
4
+
5
+ ## 安装
6
+
7
+ ### 方式一:全局安装(推荐)
8
+
9
+ ```bash
10
+ # 进入 oss-cli 目录构建
11
+ cd oss-cli
12
+ npm install
13
+ npm run build
14
+
15
+ # 全局链接
16
+ npm link
17
+ ```
18
+
19
+ 安装后可在任意位置使用 `oss-cli` 命令。
20
+
21
+ ### 方式二:作为项目依赖
22
+
23
+ ```bash
24
+ # 在你的项目中安装
25
+ npm install /path/to/oss-cli
26
+ ```
27
+
28
+ ### 方式三:发布到 npm(团队共享)
29
+
30
+ ```bash
31
+ # 在 oss-cli 目录
32
+ npm publish
33
+ ```
34
+
35
+ 然后在其他项目中:
36
+
37
+ ```bash
38
+ npm install @anthropic/oss-cli -D
39
+ ```
40
+
41
+ ## 配置凭证
42
+
43
+ ### 环境变量(推荐用于 CI/CD)
44
+
45
+ ```bash
46
+ export OSS_ACCESS_KEY_ID=your-access-key-id
47
+ export OSS_ACCESS_KEY_SECRET=your-access-key-secret
48
+ export OSS_BUCKET=your-bucket-name # 可选,默认 czxvasfile
49
+ export OSS_REGION=oss-cn-shanghai # 可选,默认 oss-cn-shanghai
50
+ ```
51
+
52
+ ### 命令行参数
53
+
54
+ ```bash
55
+ oss-cli sync ./dist h5/test/app \
56
+ --access-key-id=xxx \
57
+ --access-key-secret=xxx \
58
+ --bucket=my-bucket \
59
+ --region=oss-cn-hangzhou
60
+ ```
61
+
62
+ ## 命令
63
+
64
+ ### sync - 同步目录
65
+
66
+ 先删除 OSS 目标目录的所有文件,再上传本地目录。适合部署场景。
67
+
68
+ ```bash
69
+ oss-cli sync <本地路径> <OSS路径> [选项]
70
+
71
+ # 示例
72
+ oss-cli sync ./dist/dev/my-app h5/test/my-app
73
+ oss-cli sync ./build h5/prod/project --concurrency=5
74
+ ```
75
+
76
+ ### upload - 上传文件/目录
77
+
78
+ 仅上传,不删除已有文件。
79
+
80
+ ```bash
81
+ oss-cli upload <本地路径> <OSS路径> [选项]
82
+
83
+ # 上传目录
84
+ oss-cli upload ./dist h5/test/app
85
+
86
+ # 上传单个文件
87
+ oss-cli upload ./index.html h5/test/app/index.html
88
+ ```
89
+
90
+ ### delete - 删除 OSS 路径
91
+
92
+ ```bash
93
+ oss-cli delete <OSS路径> [选项]
94
+
95
+ # 示例
96
+ oss-cli delete h5/test/old-project
97
+ ```
98
+
99
+ ### test - 测试连接
100
+
101
+ 验证 OSS 凭证和连接是否正常。
102
+
103
+ ```bash
104
+ oss-cli test
105
+ ```
106
+
107
+ ## 选项
108
+
109
+ | 选项 | 环境变量 | 默认值 | 说明 |
110
+ | --------------------- | ----------------------- | ----------------- | ------------------------ |
111
+ | `--access-key-id` | `OSS_ACCESS_KEY_ID` | - | AccessKey ID(必需) |
112
+ | `--access-key-secret` | `OSS_ACCESS_KEY_SECRET` | - | AccessKey Secret(必需) |
113
+ | `--bucket` | `OSS_BUCKET` | `czxvasfile` | Bucket 名称 |
114
+ | `--region` | `OSS_REGION` | `oss-cn-shanghai` | 区域 |
115
+ | `--concurrency` | - | `10` | 并发上传数 |
116
+
117
+ ## 在项目中使用
118
+
119
+ ### package.json 脚本
120
+
121
+ ```json
122
+ {
123
+ "scripts": {
124
+ "deploy:test": "oss-cli sync ./dist/dev/my-app h5/test/my-app",
125
+ "deploy:prod": "oss-cli sync ./dist/prod/my-app h5/prod/my-app"
126
+ }
127
+ }
128
+ ```
129
+
130
+ ### Jenkins Pipeline
131
+
132
+ ```groovy
133
+ pipeline {
134
+ environment {
135
+ OSS_ACCESS_KEY_ID = credentials('oss-access-key-id')
136
+ OSS_ACCESS_KEY_SECRET = credentials('oss-access-key-secret')
137
+ }
138
+ stages {
139
+ stage('Deploy') {
140
+ steps {
141
+ sh 'npm run build'
142
+ sh 'oss-cli sync ./dist h5/${BRANCH_NAME}/my-app'
143
+ }
144
+ }
145
+ }
146
+ }
147
+ ```
148
+
149
+ ### GitHub Actions
150
+
151
+ ```yaml
152
+ - name: Deploy to OSS
153
+ env:
154
+ OSS_ACCESS_KEY_ID: ${{ secrets.OSS_ACCESS_KEY_ID }}
155
+ OSS_ACCESS_KEY_SECRET: ${{ secrets.OSS_ACCESS_KEY_SECRET }}
156
+ run: |
157
+ npx oss-cli sync ./dist h5/prod/my-app
158
+ ```
159
+
160
+ ## 特性
161
+
162
+ - **HTML 文件自动设置不缓存** - `.html` 文件上传时自动添加 `Cache-Control: no-cache` 头
163
+ - **自动忽略无用文件** - 跳过 `.DS_Store`、`.map` 等文件
164
+ - **并发上传** - 默认 10 个并发,可配置
165
+ - **友好的日志输出** - 带 emoji 的进度显示
166
+
167
+ ## 编程方式使用
168
+
169
+ ### 简化 API(推荐)
170
+
171
+ ```typescript
172
+ import {
173
+ syncToOss,
174
+ uploadToOss,
175
+ deleteFromOss,
176
+ testOssConnection,
177
+ } from "@anthropic/oss-cli";
178
+
179
+ // 同步目录(先删除再上传)
180
+ const syncResult = await syncToOss("./dist", "h5/test/my-app", {
181
+ accessKeyId: "xxx",
182
+ accessKeySecret: "xxx",
183
+ bucket: "my-bucket", // 可选
184
+ region: "oss-cn-shanghai", // 可选
185
+ concurrency: 10, // 可选
186
+ });
187
+
188
+ if (syncResult.success) {
189
+ console.log(`删除: ${syncResult.deletedCount} 个文件`);
190
+ console.log(`上传: ${syncResult.uploadedCount} 个文件`);
191
+ }
192
+
193
+ // 仅上传(不删除)
194
+ const uploadResult = await uploadToOss("./dist", "h5/test/my-app", {
195
+ accessKeyId: "xxx",
196
+ accessKeySecret: "xxx",
197
+ });
198
+
199
+ // 删除目录
200
+ const deleteResult = await deleteFromOss("h5/test/old-app", {
201
+ accessKeyId: "xxx",
202
+ accessKeySecret: "xxx",
203
+ });
204
+
205
+ // 测试连接
206
+ const testResult = await testOssConnection({
207
+ accessKeyId: "xxx",
208
+ accessKeySecret: "xxx",
209
+ });
210
+
211
+ if (testResult.success) {
212
+ console.log(`Bucket: ${testResult.bucketInfo?.name}`);
213
+ }
214
+ ```
215
+
216
+ ### 底层服务(高级用法)
217
+
218
+ ```typescript
219
+ import { OssService, ConfigService, FileService } from "@anthropic/oss-cli";
220
+
221
+ const config = ConfigService.getOssConfig({
222
+ accessKeyId: "xxx",
223
+ accessKeySecret: "xxx",
224
+ });
225
+
226
+ const ossService = new OssService(config);
227
+ const cliOptions = ConfigService.getCliOptions({ concurrency: 5 });
228
+
229
+ // 同步目录
230
+ await ossService.syncDirectory("./dist", "h5/test/app", cliOptions);
231
+
232
+ // 上传目录
233
+ await ossService.uploadDirectory("./dist", "h5/test/app", cliOptions);
234
+
235
+ // 删除目录
236
+ await ossService.deleteDirectory("h5/test/old-app");
237
+
238
+ // 测试连接
239
+ await ossService.testConnection();
240
+ ```
241
+
242
+ ## 常见问题
243
+
244
+ ### 连接失败
245
+
246
+ 1. 检查 AccessKey ID/Secret 是否正确
247
+ 2. 检查 Bucket 名称和区域是否匹配
248
+ 3. 检查系统时间是否准确(OSS 签名依赖时间)
249
+ 4. 检查网络连接
250
+
251
+ ### 上传失败
252
+
253
+ 1. 检查本地路径是否存在
254
+ 2. 检查 OSS 权限是否足够
255
+ 3. 尝试降低并发数:`--concurrency=1`
package/dist/api.d.ts ADDED
@@ -0,0 +1,115 @@
1
+ /**
2
+ * OSS CLI API - 供其他项目调用的简化接口
3
+ */
4
+ import { DeleteResult } from './services/oss.service.js';
5
+ export interface SyncOptions {
6
+ /** AccessKey ID */
7
+ accessKeyId: string;
8
+ /** AccessKey Secret */
9
+ accessKeySecret: string;
10
+ /** Bucket 名称,默认 czxvasfile */
11
+ bucket?: string;
12
+ /** 区域,默认 oss-cn-shanghai */
13
+ region?: string;
14
+ /** 并发数,默认 10 */
15
+ concurrency?: number;
16
+ /** 超时时间(毫秒),默认 60000 */
17
+ timeout?: number;
18
+ }
19
+ export interface SyncResult {
20
+ /** 是否成功 */
21
+ success: boolean;
22
+ /** 删除的文件数 */
23
+ deletedCount: number;
24
+ /** 上传成功数 */
25
+ uploadedCount: number;
26
+ /** 上传失败数 */
27
+ failedCount: number;
28
+ /** 错误信息 */
29
+ error?: string;
30
+ }
31
+ export interface UploadToOssResult {
32
+ /** 是否成功 */
33
+ success: boolean;
34
+ /** 上传成功数 */
35
+ uploadedCount: number;
36
+ /** 上传失败数 */
37
+ failedCount: number;
38
+ /** 上传的文件列表 */
39
+ files: string[];
40
+ /** 错误信息 */
41
+ error?: string;
42
+ }
43
+ /**
44
+ * 同步本地目录到 OSS(先删除再上传)
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * import { syncToOss } from '@anthropic/oss-cli';
49
+ *
50
+ * const result = await syncToOss('./dist', 'h5/test/my-app', {
51
+ * accessKeyId: 'xxx',
52
+ * accessKeySecret: 'xxx',
53
+ * });
54
+ *
55
+ * if (result.success) {
56
+ * console.log(`上传成功: ${result.uploadedCount} 个文件`);
57
+ * }
58
+ * ```
59
+ */
60
+ export declare function syncToOss(localPath: string, ossPath: string, options: SyncOptions): Promise<SyncResult>;
61
+ /**
62
+ * 上传本地目录到 OSS(不删除已有文件)
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * import { uploadToOss } from '@anthropic/oss-cli';
67
+ *
68
+ * const result = await uploadToOss('./dist', 'h5/test/my-app', {
69
+ * accessKeyId: 'xxx',
70
+ * accessKeySecret: 'xxx',
71
+ * });
72
+ * ```
73
+ */
74
+ export declare function uploadToOss(localPath: string, ossPath: string, options: SyncOptions): Promise<UploadToOssResult>;
75
+ /**
76
+ * 删除 OSS 路径下的所有文件
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * import { deleteFromOss } from '@anthropic/oss-cli';
81
+ *
82
+ * const result = await deleteFromOss('h5/test/old-app', {
83
+ * accessKeyId: 'xxx',
84
+ * accessKeySecret: 'xxx',
85
+ * });
86
+ * ```
87
+ */
88
+ export declare function deleteFromOss(ossPath: string, options: SyncOptions): Promise<DeleteResult>;
89
+ /**
90
+ * 测试 OSS 连接
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * import { testOssConnection } from '@anthropic/oss-cli';
95
+ *
96
+ * const result = await testOssConnection({
97
+ * accessKeyId: 'xxx',
98
+ * accessKeySecret: 'xxx',
99
+ * });
100
+ *
101
+ * if (result.success) {
102
+ * console.log(`Bucket: ${result.bucketInfo?.name}`);
103
+ * }
104
+ * ```
105
+ */
106
+ export declare function testOssConnection(options: SyncOptions): Promise<{
107
+ success: boolean;
108
+ bucketInfo?: {
109
+ name: string;
110
+ region: string;
111
+ creationDate: string;
112
+ };
113
+ error?: string;
114
+ }>;
115
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAc,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAErE,MAAM,WAAW,WAAW;IACxB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACvB,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAC9B,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,SAAS,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,UAAU,CAAC,CAkCrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAkC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC,CAoBvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;IACnE,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAwBD"}
package/dist/api.js ADDED
@@ -0,0 +1,176 @@
1
+ /**
2
+ * OSS CLI API - 供其他项目调用的简化接口
3
+ */
4
+ import { OssService } from './services/oss.service.js';
5
+ /**
6
+ * 同步本地目录到 OSS(先删除再上传)
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { syncToOss } from '@anthropic/oss-cli';
11
+ *
12
+ * const result = await syncToOss('./dist', 'h5/test/my-app', {
13
+ * accessKeyId: 'xxx',
14
+ * accessKeySecret: 'xxx',
15
+ * });
16
+ *
17
+ * if (result.success) {
18
+ * console.log(`上传成功: ${result.uploadedCount} 个文件`);
19
+ * }
20
+ * ```
21
+ */
22
+ export async function syncToOss(localPath, ossPath, options) {
23
+ try {
24
+ const ossConfig = {
25
+ accessKeyId: options.accessKeyId,
26
+ accessKeySecret: options.accessKeySecret,
27
+ bucket: options.bucket ?? 'czxvasfile',
28
+ region: options.region ?? 'oss-cn-shanghai',
29
+ timeout: options.timeout ?? 60000,
30
+ };
31
+ const cliOptions = {
32
+ concurrency: options.concurrency ?? 10,
33
+ ignorePatterns: [/\.DS_Store$/i, /\.map$/i],
34
+ };
35
+ const ossService = new OssService(ossConfig);
36
+ const result = await ossService.syncDirectory(localPath, ossPath, cliOptions);
37
+ return {
38
+ success: result.uploadResult.failed === 0,
39
+ deletedCount: result.deleteResult.deletedCount,
40
+ uploadedCount: result.uploadResult.success,
41
+ failedCount: result.uploadResult.failed,
42
+ };
43
+ }
44
+ catch (error) {
45
+ const err = error;
46
+ return {
47
+ success: false,
48
+ deletedCount: 0,
49
+ uploadedCount: 0,
50
+ failedCount: 0,
51
+ error: err.message,
52
+ };
53
+ }
54
+ }
55
+ /**
56
+ * 上传本地目录到 OSS(不删除已有文件)
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * import { uploadToOss } from '@anthropic/oss-cli';
61
+ *
62
+ * const result = await uploadToOss('./dist', 'h5/test/my-app', {
63
+ * accessKeyId: 'xxx',
64
+ * accessKeySecret: 'xxx',
65
+ * });
66
+ * ```
67
+ */
68
+ export async function uploadToOss(localPath, ossPath, options) {
69
+ try {
70
+ const ossConfig = {
71
+ accessKeyId: options.accessKeyId,
72
+ accessKeySecret: options.accessKeySecret,
73
+ bucket: options.bucket ?? 'czxvasfile',
74
+ region: options.region ?? 'oss-cn-shanghai',
75
+ timeout: options.timeout ?? 60000,
76
+ };
77
+ const cliOptions = {
78
+ concurrency: options.concurrency ?? 10,
79
+ ignorePatterns: [/\.DS_Store$/i, /\.map$/i],
80
+ };
81
+ const ossService = new OssService(ossConfig);
82
+ const result = await ossService.uploadDirectory(localPath, ossPath, cliOptions);
83
+ return {
84
+ success: result.failed === 0,
85
+ uploadedCount: result.success,
86
+ failedCount: result.failed,
87
+ files: result.files,
88
+ };
89
+ }
90
+ catch (error) {
91
+ const err = error;
92
+ return {
93
+ success: false,
94
+ uploadedCount: 0,
95
+ failedCount: 0,
96
+ files: [],
97
+ error: err.message,
98
+ };
99
+ }
100
+ }
101
+ /**
102
+ * 删除 OSS 路径下的所有文件
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * import { deleteFromOss } from '@anthropic/oss-cli';
107
+ *
108
+ * const result = await deleteFromOss('h5/test/old-app', {
109
+ * accessKeyId: 'xxx',
110
+ * accessKeySecret: 'xxx',
111
+ * });
112
+ * ```
113
+ */
114
+ export async function deleteFromOss(ossPath, options) {
115
+ try {
116
+ const ossConfig = {
117
+ accessKeyId: options.accessKeyId,
118
+ accessKeySecret: options.accessKeySecret,
119
+ bucket: options.bucket ?? 'czxvasfile',
120
+ region: options.region ?? 'oss-cn-shanghai',
121
+ timeout: options.timeout ?? 60000,
122
+ };
123
+ const ossService = new OssService(ossConfig);
124
+ return await ossService.deleteDirectory(ossPath);
125
+ }
126
+ catch (error) {
127
+ const err = error;
128
+ return {
129
+ success: false,
130
+ deletedCount: 0,
131
+ error: err.message,
132
+ };
133
+ }
134
+ }
135
+ /**
136
+ * 测试 OSS 连接
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * import { testOssConnection } from '@anthropic/oss-cli';
141
+ *
142
+ * const result = await testOssConnection({
143
+ * accessKeyId: 'xxx',
144
+ * accessKeySecret: 'xxx',
145
+ * });
146
+ *
147
+ * if (result.success) {
148
+ * console.log(`Bucket: ${result.bucketInfo?.name}`);
149
+ * }
150
+ * ```
151
+ */
152
+ export async function testOssConnection(options) {
153
+ try {
154
+ const ossConfig = {
155
+ accessKeyId: options.accessKeyId,
156
+ accessKeySecret: options.accessKeySecret,
157
+ bucket: options.bucket ?? 'czxvasfile',
158
+ region: options.region ?? 'oss-cn-shanghai',
159
+ timeout: options.timeout ?? 60000,
160
+ };
161
+ const ossService = new OssService(ossConfig);
162
+ const bucketInfo = await ossService.testConnection();
163
+ return {
164
+ success: true,
165
+ bucketInfo,
166
+ };
167
+ }
168
+ catch (error) {
169
+ const err = error;
170
+ return {
171
+ success: false,
172
+ error: err.message,
173
+ };
174
+ }
175
+ }
176
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * OSS CLI - 阿里云 OSS 命令行工具
4
+ * 支持文件上传、删除、同步等操作
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=oss-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oss-cli.d.ts","sourceRoot":"","sources":["../../src/bin/oss-cli.ts"],"names":[],"mappings":";AAEA;;;GAGG"}