scp-next 1.1.4 → 1.1.6

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