scp-next 1.1.4 → 1.1.5

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/CHANGELOG.md CHANGED
@@ -20,7 +20,7 @@
20
20
  - Clarified SSH agent usage, `SSH_AUTH_SOCK`, timeout behavior, and configuration-file
21
21
  recommendations.
22
22
  - Expanded GitHub Pages documentation with CLI, library, and configuration options.
23
- - Moved release notes under `guides/release-notes/` for cleaner documentation organization.
23
+ - Moved release notes under `guides/RELEASE_NOTES/` for cleaner documentation organization.
24
24
 
25
25
  ## 1.0.14
26
26
 
package/README.md CHANGED
@@ -642,8 +642,8 @@ assignment forms from CLI logs and errors.
642
642
 
643
643
  ## User Guides
644
644
 
645
- - [English](https://github.com/chengchuu/scp-next/blob/main/guides/release-notes/introducing-scp-next-v1.0.19-en.md)
646
- - [简体中文](https://github.com/chengchuu/scp-next/blob/main/guides/release-notes/introducing-scp-next-v1.0.19-zh.md)
645
+ - [English](https://github.com/chengchuu/scp-next/blob/main/guides/RELEASE_NOTES/introducing-scp-next-v1.0.19.en-US.md)
646
+ - [简体中文](https://github.com/chengchuu/scp-next/blob/main/guides/RELEASE_NOTES/introducing-scp-next-v1.0.19.zh-CN.md)
647
647
 
648
648
  ## Development
649
649
 
@@ -1,34 +1,43 @@
1
- # scp-next v1.0.19 项目介绍: 面向 Node.js 开发者的 SSH 文件传输工具
1
+ # `scp-next` v1.0.19: 面向 Node.js 开发者的 SSH 文件传输工具
2
2
 
3
3
  ![scp-next](http://blog.mazey.net/wp-content/uploads/2026/07/scp-next-SF-s7x3.jpg)
4
4
 
5
- 介绍 scp-next v1.0.19 的 npm 安装、CLI 上传下载、配置文件、凭据安全、库 API 和新人使用流程。
5
+ 本文介绍 `scp-next` v1.0.19 的 npm 安装方式和 CLI 用法。内容还包括配置文件、凭据安全、库 API 和新成员接手流程。
6
6
 
7
- - [前言](#前言)
8
- - [适合谁使用](#适合谁使用)
7
+ ```plain
8
+ 英文标签:
9
+ #ScpNext #Nodejs #TypeScript #SFTP #SSH #FileTransfer #CommandLine #DeveloperTools #NpmPackage #DevOps
10
+ 中文标签:
11
+ #文件传输 #命令行工具 #开发者工具 #自动化部署 #服务器运维 #配置管理 #密钥认证 #后端开发 #工程实践 #技术分享
12
+ ```
13
+
14
+ - [项目概述](#项目概述)
15
+ - [适用场景](#适用场景)
9
16
  - [安装方式](#安装方式)
10
- - [先理解传输方向](#先理解传输方向)
17
+ - [传输方向](#传输方向)
11
18
  - [命令行快速开始](#命令行快速开始)
12
- - [推荐的凭据写法](#推荐的凭据写法)
19
+ - [凭据配置建议](#凭据配置建议)
13
20
  - [常用命令选项](#常用命令选项)
14
- - [配置文件用法](#配置文件用法)
15
- - [库 API 用法](#库-api-用法)
21
+ - [配置文件](#配置文件)
22
+ - [库 API](#库-api)
16
23
  - [主机验证](#主机验证)
17
- - [新人接手清单](#新人接手清单)
24
+ - [项目接手清单](#项目接手清单)
18
25
 
19
- ## 前言
26
+ ## 项目概述
20
27
 
21
- `scp-next` 是一个 SCP 风格的 npm 包。他同时提供命令行工具和库,用于通过 SSH 安全传输文件。虽然包名包含 SCP,实际使用 SFTP,不会为普通传输执行远程 Shell 命令。
28
+ `scp-next` 是一个 SCP 风格的 npm 包。他同时提供命令行工具和库,用于通过 SSH 安全传输文件。虽然包名包含 SCP,但普通传输使用 SFTP。
22
29
 
23
- ## 适合谁使用
30
+ ## 适用场景
24
31
 
25
- 如果你需要在部署脚本、CI 流程或 Node.js 应用中传输文件,`scp-next` 可以减少重复封装。常见场景如下:
32
+ 部署脚本、CI 流程和 Node.js 应用都可以使用 `scp-next` 传输文件。这样能减少重复封装。常见场景如下:
26
33
 
27
34
  - 将本地构建产物上传到服务器。
28
35
  - 从服务器下载日志或产物。
29
36
  - 用配置文件管理不同服务器环境。
30
37
  - 在应用代码中复用同一个传输客户端。
31
38
 
39
+ `scp-next` 要求 Node.js 版本不低于 18.18.0。
40
+
32
41
  ## 安装方式
33
42
 
34
43
  全局安装后,可以直接使用 `scp-next` 命令。
@@ -43,9 +52,9 @@ npm install --global scp-next
43
52
  npm install scp-next
44
53
  ```
45
54
 
46
- 如果一个项目只在脚本里调用命令行工具,也可以把他安装到项目依赖中,再通过 `npx scp-next` 或 npm scripts 调用。
55
+ 如果项目只需要在脚本中调用 CLI,可以将 `scp-next` 安装为项目依赖。安装后,可通过 `npx scp-next` 或 npm scripts 调用命令。
47
56
 
48
- ## 先理解传输方向
57
+ ## 传输方向
49
58
 
50
59
  命令行统一使用 `<source> <destination>` 两个位置参数。
51
60
 
@@ -58,10 +67,12 @@ scp-next run <job> [source] [destination] [options]
58
67
  方向规则如下:
59
68
 
60
69
  | Operation | Source | Destination |
61
- | --------- | ------ | ----------- |
70
+ | :-------- | :----- | :---------- |
62
71
  | Upload | Local | Remote |
63
72
  | Download | Remote | Local |
64
73
 
74
+ 库 API 不使用 `<source>` 和 `<destination>`。上传和下载选项使用 `localPath` 与 `remotePath`。这两个名称可在应用代码中明确区分本地路径和远程路径。
75
+
65
76
  ## 命令行快速开始
66
77
 
67
78
  上传本地目录到远程服务器。
@@ -74,7 +85,7 @@ scp-next upload ./dist /var/www/example \
74
85
  --recursive
75
86
  ```
76
87
 
77
- 下载远程文件到本地目录。如果目标目录不存在,`scp-next` 默认会创建目录。这符合日常 `cp` 和 `scp` 风格的使用习惯。可以用 `--no-create-directories` 关闭该行为。
88
+ 将远程文件下载到本地路径。如果目标目录不存在,`scp-next` 默认会创建该目录。这符合日常使用 `cp` 和 `scp` 时的习惯。可以用 `--no-create-directories` 关闭该行为。
78
89
 
79
90
  ```bash
80
91
  scp-next download /var/log/example.log ./logs/example.log \
@@ -83,7 +94,7 @@ scp-next download /var/log/example.log ./logs/example.log \
83
94
  --password your-password
84
95
  ```
85
96
 
86
- 先预览上传计划,而不连接服务器。`--dry-run` 会解析配置并检查本地路径。他不会连接远程服务器,也不会修改本地或远程文件。
97
+ 可以先预览上传计划,而不连接服务器。`--dry-run` 会解析配置并检查本地路径。该选项不会连接远程服务器,也不会修改本地或远程文件。
87
98
 
88
99
  ```bash
89
100
  scp-next upload ./dist /var/www/example \
@@ -94,9 +105,9 @@ scp-next upload ./dist /var/www/example \
94
105
  --dry-run
95
106
  ```
96
107
 
97
- ## 推荐的凭据写法
108
+ ## 凭据配置建议
98
109
 
99
- 命令行密码参数适合本地快速试用。
110
+ 命令行密码参数便于本地快速试用。密码可能出现在 shell 历史记录或进程列表中。
100
111
 
101
112
  ```bash
102
113
  scp-next upload ./dist /var/www/example \
@@ -106,7 +117,7 @@ scp-next upload ./dist /var/www/example \
106
117
  --recursive
107
118
  ```
108
119
 
109
- 共享环境和生产环境建议使用环境变量。这样可以降低密码进入 Shell 历史记录或进程列表的风险。
120
+ 共享环境和生产环境建议使用环境变量。这样可以降低密码进入 shell 历史记录或进程列表的风险。
110
121
 
111
122
  ```bash
112
123
  export SCP_NEXT_HOST="your-host"
@@ -126,28 +137,41 @@ scp-next upload ./dist /var/www/example \
126
137
  --recursive
127
138
  ```
128
139
 
140
+ 如果环境已经使用 SSH agent 身份验证,可以先添加密钥。`scp-next` 随后会使用 `SSH_AUTH_SOCK`。
141
+
142
+ ```bash
143
+ ssh-add ~/.ssh/id_ed25519
144
+
145
+ export SCP_NEXT_HOST="your-host"
146
+ export SCP_NEXT_USERNAME="your-username"
147
+
148
+ scp-next upload ./dist /var/www/example --recursive
149
+ ```
150
+
129
151
  ## 常用命令选项
130
152
 
131
- | 选项 | 作用 |
132
- | ------------------------------------- | ------------------------------- |
133
- | `--host <host>` | SSH 服务器地址。 |
134
- | `--port <port>` | SSH 服务器端口,默认值为 `22`。 |
135
- | `--username <username>` | SSH 用户名。 |
136
- | `--password <password>` | SSH 密码。 |
137
- | `--private-key-file <privateKeyFile>` | 私钥文件路径,支持 `~`。 |
138
- | `--passphrase <passphrase>` | 加密私钥的口令。 |
139
- | `--config <path>` | 指定配置文件路径。 |
140
- | `--profile <name>` | 选择配置文件中的服务器配置。 |
141
- | `--recursive` | 递归传输目录,默认关闭。 |
142
- | `--overwrite` | 允许覆盖已有目标文件。 |
143
- | `--create-directories` | 创建缺失的目标目录,默认开启。 |
144
- | `--no-create-directories` | 关闭目标目录自动创建。 |
145
- | `--dry-run` | 只解析和验证,不执行传输。 |
146
- | `--timeout <milliseconds>` | SSH 握手超时时间,单位为毫秒。 |
147
- | `--quiet` | 关闭进度和非错误输出。 |
148
- | `--verbose` | 输出不含敏感信息的诊断内容。 |
149
-
150
- ## 配置文件用法
153
+ | 选项 | 作用 |
154
+ | :------------------------------------ | :--------------------------------- |
155
+ | `--host <host>` | SSH 服务器地址。 |
156
+ | `--port <port>` | SSH 服务器端口,默认值为 `22`。 |
157
+ | `--username <username>` | SSH 用户名。 |
158
+ | `--password <password>` | SSH 密码。 |
159
+ | `--private-key-file <privateKeyFile>` | 私钥文件路径,支持 `~`。 |
160
+ | `--passphrase <passphrase>` | 加密私钥的口令。 |
161
+ | `--config <path>` | 指定配置文件路径。 |
162
+ | `--profile <name>` | 选择配置文件中的服务器配置。 |
163
+ | `--recursive` | 递归传输目录,默认关闭。 |
164
+ | `--overwrite` | 允许覆盖已有目标文件。 |
165
+ | `--create-directories` | 创建缺失的目标目录,默认开启。 |
166
+ | `--no-create-directories` | 关闭目标目录自动创建。 |
167
+ | `--dry-run` | 只解析和验证,不执行传输。 |
168
+ | `--timeout <milliseconds>` | SSH 连接就绪超时时间,单位为毫秒。 |
169
+ | `--quiet` | 关闭进度和非错误输出。 |
170
+ | `--verbose` | 输出不含敏感信息的诊断内容。 |
171
+
172
+ `--timeout` 映射到 SSH 的 `readyTimeout`。`--timeout` 控制等待连接握手完成的时长。`--timeout` 不限制单个文件或整个传输任务的执行时长。
173
+
174
+ ## 配置文件
151
175
 
152
176
  CLI 会自动查找以下配置文件。
153
177
 
@@ -157,7 +181,7 @@ scp-next.config.json
157
181
  .scp-nextrc.json
158
182
  ```
159
183
 
160
- 也可以显式指定路径。
184
+ 也可以通过 `--config` 显式指定路径。
161
185
 
162
186
  ```bash
163
187
  scp-next upload ./dist /var/www/example \
@@ -196,13 +220,13 @@ scp-next upload ./dist /var/www/example \
196
220
  }
197
221
  ```
198
222
 
199
- 运行配置好的上传任务。
223
+ 运行已配置的上传任务。
200
224
 
201
225
  ```bash
202
226
  scp-next run deploy
203
227
  ```
204
228
 
205
- 运行配置好的下载任务。
229
+ 运行已配置的下载任务。
206
230
 
207
231
  ```bash
208
232
  scp-next run download-logs
@@ -214,19 +238,19 @@ scp-next run download-logs
214
238
  scp-next run deploy ./dist-canary /var/www/canary
215
239
  ```
216
240
 
217
- 配置优先级从高到低如下。
241
+ 配置优先级从高到低如下:
218
242
 
219
243
  1. 显式 CLI 选项
220
244
  2. 位置参数
221
245
  3. 环境变量
222
- 4. 选中的配置 profile
223
- 5. 根级配置值
224
- 6. 配置的 job 值
246
+ 4. 所选 `profile`
247
+ 5. 根级别配置值
248
+ 6. `job` 配置值
225
249
  7. 内部默认值
226
250
 
227
- 不要把包含真实密码的配置文件提交到 Public 仓库。共享仓库和部署环境应优先使用 `SCP_NEXT_PASSWORD` 或受保护的密钥文件。
251
+ 不要将包含真实密码的配置文件提交到公共仓库。共享仓库和部署环境应优先使用 `SCP_NEXT_PASSWORD`。也可以使用 SSH agent 身份验证或受保护的密钥文件。
228
252
 
229
- ## 库 API 用法
253
+ ## 库 API
230
254
 
231
255
  ESM 项目可以直接导入 `upload`。
232
256
 
@@ -265,7 +289,7 @@ main().catch((error) => {
265
289
  });
266
290
  ```
267
291
 
268
- 如果一次连接内要执行多个操作,可以创建可复用客户端。
292
+ 如果需要在同一个连接生命周期内执行多个操作,可以创建可复用客户端。
269
293
 
270
294
  ```ts
271
295
  import { createClient } from "scp-next";
@@ -294,31 +318,32 @@ createClient(options);
294
318
  copy(options);
295
319
  ```
296
320
 
297
- 错误类型包含稳定的 `code`、可读的 `message` 和经过脱敏的上下文。常见错误包括 `ConfigurationError`、`AuthenticationError`、`ConnectionError`、`TransferError` 和 `HostVerificationError`。
321
+ 公共错误包含稳定的 `code`、可读的 `message` 和可选的 `cause`。`scp-next` 会对错误上下文进行脱敏处理。处理后的上下文不包含敏感信息。常见错误类型包括 `ConfigurationError`、`AuthenticationError` 和 `ConnectionError`。其他类型包括 `TransferError` 和 `HostVerificationError`。
298
322
 
299
323
  ## 主机验证
300
324
 
301
- `scp-next` 支持通过 `hostFingerprint` 或 `knownHostsFile` 验证主机。如果没有显式配置,他会读取 `~/.ssh/known_hosts`。
325
+ `scp-next` 支持两种主机验证配置: `hostFingerprint` 和 `knownHostsFile`。如果没有显式配置,程序会读取 `~/.ssh/known_hosts`。
302
326
 
303
- 在 CI 或部署环境中,如果没有可用的 known-hosts 文件,建议配置 `hostFingerprint`。如果无法建立主机验证,`scp-next` 会失败退出。
327
+ 在 CI 或部署环境中,可能没有可用的 `known_hosts` 文件。此时建议配置 `hostFingerprint`。如果无法建立主机验证,`scp-next` 会拒绝继续执行。
304
328
 
305
- ## 新人接手清单
329
+ ## 项目接手清单
306
330
 
307
- 接手项目时,可以按以下顺序验证。
331
+ 接手已经使用 `scp-next` 的项目时,可以按以下顺序验证。
308
332
 
309
333
  1. 确认 Node.js 版本不低于 18.18.0。
310
334
  2. 使用 `npm install --global scp-next` 安装 CLI。
311
335
  3. 用 `scp-next upload ... --dry-run` 验证参数和路径。
336
+ 4. 通过环境变量或配置文件管理服务器连接信息。
337
+ 5. 使用 `scp-next run <job>` 处理重复执行的上传或下载流程。
338
+ 6. 如果项目需要集成库,可在 Node.js 代码中使用 `upload`、`download` 或 `createClient`。
312
339
 
313
- 掌握这几项后,就可以把 `scp-next` 用于日常部署脚本、日志下载任务和 Node.js 文件传输流程。
340
+ 完成这些步骤后,即可使用 `scp-next`。他适用于部署脚本、日志下载任务和 Node.js 文件传输流程。
314
341
 
315
342
  **版权声明**
316
343
 
317
- 本文为原创文章,作者保留版权。转载请保留本文完整内容,并以超链接形式注明作者及原文出处。
344
+ 本文为原创文章,作者保留版权。转载请保留全文,并通过超链接注明作者和原文出处。
318
345
 
319
346
  作者: [除除](https://github.com/chengchuu)
320
347
  原文: <https://blog.mazey.net/6454.html>
321
348
 
322
- <!-- ID: introducing-scp-next-v1.0.19-zh -->
323
-
324
- (完)
349
+ <!-- ID: introducing-scp-next-v1.0.19.zh-CN.md -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scp-next",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "description": "An SCP CLI and library for secure SSH file transfers using SFTP.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",