scp-next 1.1.3 → 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 +1 -1
- package/README.md +2 -2
- package/guides/{release-notes/introducing-scp-next-v1.0.19-zh.md → RELEASE_NOTES/introducing-scp-next-v1.0.19.zh-CN.md} +86 -61
- package/package.json +1 -1
- /package/guides/{release-notes → RELEASE_NOTES}/introducing-scp-next-v1.0.14.md +0 -0
- /package/guides/{release-notes/introducing-scp-next-v1.0.19-en.md → RELEASE_NOTES/introducing-scp-next-v1.0.19.en-US.md} +0 -0
- /package/guides/{release-notes → RELEASE_NOTES}/introducing-scp-next-v1.0.2.md +0 -0
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/
|
|
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/
|
|
646
|
-
- [简体中文](https://github.com/chengchuu/scp-next/blob/main/guides/
|
|
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
|
|
1
|
+
# `scp-next` v1.0.19: 面向 Node.js 开发者的 SSH 文件传输工具
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
|
|
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
|
|
21
|
+
- [配置文件](#配置文件)
|
|
22
|
+
- [库 API](#库-api)
|
|
16
23
|
- [主机验证](#主机验证)
|
|
17
|
-
- [
|
|
24
|
+
- [项目接手清单](#项目接手清单)
|
|
18
25
|
|
|
19
|
-
##
|
|
26
|
+
## 项目概述
|
|
20
27
|
|
|
21
|
-
`scp-next` 是一个 SCP 风格的 npm 包。他同时提供命令行工具和库,用于通过 SSH 安全传输文件。虽然包名包含 SCP
|
|
28
|
+
`scp-next` 是一个 SCP 风格的 npm 包。他同时提供命令行工具和库,用于通过 SSH 安全传输文件。虽然包名包含 SCP,但普通传输使用 SFTP。
|
|
22
29
|
|
|
23
|
-
##
|
|
30
|
+
## 适用场景
|
|
24
31
|
|
|
25
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
共享环境和生产环境建议使用环境变量。这样可以降低密码进入
|
|
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.
|
|
223
|
-
5.
|
|
224
|
-
6.
|
|
246
|
+
4. 所选 `profile`
|
|
247
|
+
5. 根级别配置值
|
|
248
|
+
6. `job` 配置值
|
|
225
249
|
7. 内部默认值
|
|
226
250
|
|
|
227
|
-
|
|
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
|
-
|
|
321
|
+
公共错误包含稳定的 `code`、可读的 `message` 和可选的 `cause`。`scp-next` 会对错误上下文进行脱敏处理。处理后的上下文不包含敏感信息。常见错误类型包括 `ConfigurationError`、`AuthenticationError` 和 `ConnectionError`。其他类型包括 `TransferError` 和 `HostVerificationError`。
|
|
298
322
|
|
|
299
323
|
## 主机验证
|
|
300
324
|
|
|
301
|
-
`scp-next`
|
|
325
|
+
`scp-next` 支持两种主机验证配置: `hostFingerprint` 和 `knownHostsFile`。如果没有显式配置,程序会读取 `~/.ssh/known_hosts`。
|
|
302
326
|
|
|
303
|
-
在 CI
|
|
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
|
-
|
|
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-
|
|
323
|
-
|
|
324
|
-
(完)
|
|
349
|
+
<!-- ID: introducing-scp-next-v1.0.19.zh-CN.md -->
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|