sdkvm 1.0.2 → 1.0.3
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.en.md +33 -26
- package/README.md +33 -26
- package/dist/index.js +16 -1
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -69,22 +69,11 @@ Platform limits:
|
|
|
69
69
|
|
|
70
70
|
## Install
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
**Prefer the install script**: no preinstalled Node.js, an isolated runtime for the CLI, data and entrypoint under `SDKVM_HOME` (default `~/.sdkvm`), and upgrades via `sdkvm upgrade`.
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
### Install script (recommended)
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
npm install -g sdkvm
|
|
78
|
-
pnpm add -g sdkvm
|
|
79
|
-
yarn global add sdkvm
|
|
80
|
-
bun add -g sdkvm
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
The CLI then runs on whatever `node` is first on `PATH`. Switching to a Node older than 18.15 stops the CLI until you switch back.
|
|
84
|
-
|
|
85
|
-
### Install script
|
|
86
|
-
|
|
87
|
-
No preinstalled Node.js is required. A GitHub Release that already contains `sdkvm.tgz` and `SHA256SUMS` is required (uploaded by CI after a `v*` tag).
|
|
76
|
+
Requires a [GitHub Release](https://github.com/QInJ1995/sdkvm/releases) that already contains `sdkvm.tgz` and `SHA256SUMS` (uploaded by CI after a `v*` tag).
|
|
88
77
|
|
|
89
78
|
macOS / Linux:
|
|
90
79
|
|
|
@@ -100,33 +89,51 @@ irm https://raw.githubusercontent.com/QInJ1995/sdkvm/main/install.ps1 | iex
|
|
|
100
89
|
|
|
101
90
|
The script:
|
|
102
91
|
|
|
103
|
-
1. Downloads Node.js 22.20.0 into
|
|
104
|
-
2. Downloads `sdkvm.tgz` from the GitHub Release, checks SHA-256, and extracts it to
|
|
105
|
-
3. Writes
|
|
92
|
+
1. Downloads Node.js 22.20.0 into `$SDKVM_HOME/runtime` (CLI only; `sdkvm node use` does not change it).
|
|
93
|
+
2. Downloads `sdkvm.tgz` from the GitHub Release, checks SHA-256, and extracts it to `$SDKVM_HOME/cli`.
|
|
94
|
+
3. Writes `$SDKVM_HOME/bin/sdkvm` (on Windows, `%SDKVM_HOME%\bin\sdkvm.cmd`) and adds that directory to the shell profile / user PATH (zsh → `~/.zshrc`, bash → `~/.bash_profile` or `~/.bashrc`).
|
|
95
|
+
|
|
96
|
+
Then open a new terminal, or `source` the rc file, and check:
|
|
97
|
+
|
|
98
|
+
```console
|
|
99
|
+
$ sdkvm version
|
|
100
|
+
1.0.3
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
To use a custom data root, **pass `SDKVM_HOME` on the install command itself** (`curl | sh` does not read `~/.zshrc`):
|
|
106
104
|
|
|
107
|
-
|
|
105
|
+
```sh
|
|
106
|
+
SDKVM_HOME=/Volumes/Develop/sdkvm \
|
|
107
|
+
curl -fsSL https://raw.githubusercontent.com/QInJ1995/sdkvm/main/install.sh | sh
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Override download prefixes when needed:
|
|
108
111
|
|
|
109
112
|
```sh
|
|
110
113
|
SDKVM_NODE_DIST=https://npmmirror.com/mirrors/node \
|
|
111
114
|
SDKVM_RELEASE_BASE=https://github.com/QInJ1995/sdkvm/releases \
|
|
112
|
-
|
|
115
|
+
curl -fsSL https://raw.githubusercontent.com/QInJ1995/sdkvm/main/install.sh | sh
|
|
113
116
|
```
|
|
114
117
|
|
|
115
|
-
|
|
118
|
+
### npm / pnpm / yarn / bun (alternative)
|
|
116
119
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
+
Use this when Node.js >= 18.15 is already installed and you want the package manager to own global tools. The CLI follows the `node` on `PATH`; a Node older than 18.15 can stop the CLI.
|
|
121
|
+
|
|
122
|
+
```sh
|
|
123
|
+
npm install -g sdkvm
|
|
124
|
+
pnpm add -g sdkvm
|
|
125
|
+
yarn global add sdkvm
|
|
126
|
+
bun add -g sdkvm
|
|
120
127
|
```
|
|
121
128
|
|
|
122
129
|
## Upgrade
|
|
123
130
|
|
|
124
131
|
| Install method | Command | What changes |
|
|
125
132
|
|---|---|---|
|
|
126
|
-
|
|
|
127
|
-
|
|
|
133
|
+
| Script (recommended) | `sdkvm upgrade` | Replaces `$SDKVM_HOME/cli` only. The runtime and installed SDKs stay |
|
|
134
|
+
| npm and friends | `npm update -g sdkvm` | CLI only. pnpm / yarn / bun use their own global update command |
|
|
128
135
|
|
|
129
|
-
|
|
136
|
+
The data directory is independent of a CLI upgrade. A script install can also be refreshed by running the install script again.
|
|
130
137
|
|
|
131
138
|
## Quick start
|
|
132
139
|
|
package/README.md
CHANGED
|
@@ -69,22 +69,11 @@
|
|
|
69
69
|
|
|
70
70
|
## 安装
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
**推荐使用安装脚本**:无需本机预装 Node.js,CLI 自带隔离运行时,数据与入口都在 `SDKVM_HOME`(默认 `~/.sdkvm`)下,升级用 `sdkvm upgrade` 即可。
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
### 安装脚本(推荐)
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
npm install -g sdkvm
|
|
78
|
-
pnpm add -g sdkvm
|
|
79
|
-
yarn global add sdkvm
|
|
80
|
-
bun add -g sdkvm
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
装好后 CLI 使用 `PATH` 上的 `node`。若之后切到 18.15 以前的 Node,CLI 会无法启动,切回较新版本即可。
|
|
84
|
-
|
|
85
|
-
### 安装脚本
|
|
86
|
-
|
|
87
|
-
不要求本机已经安装 Node.js。需要仓库已有带 `sdkvm.tgz` 与 `SHA256SUMS` 的 GitHub Release(打 `v*` tag 后由 CI 上传)。
|
|
76
|
+
需要仓库已有带 `sdkvm.tgz` 与 `SHA256SUMS` 的 [GitHub Release](https://github.com/QInJ1995/sdkvm/releases)(打 `v*` tag 后由 CI 上传)。
|
|
88
77
|
|
|
89
78
|
macOS / Linux:
|
|
90
79
|
|
|
@@ -100,33 +89,51 @@ irm https://raw.githubusercontent.com/QInJ1995/sdkvm/main/install.ps1 | iex
|
|
|
100
89
|
|
|
101
90
|
脚本会:
|
|
102
91
|
|
|
103
|
-
1. 下载 Node.js 22.20.0 到
|
|
104
|
-
2. 从 GitHub Release 下载 `sdkvm.tgz`,校验 SHA-256 后解压到
|
|
105
|
-
3. 写入
|
|
92
|
+
1. 下载 Node.js 22.20.0 到 `$SDKVM_HOME/runtime`(仅启动 CLI,`sdkvm node use` 不会改到它)。
|
|
93
|
+
2. 从 GitHub Release 下载 `sdkvm.tgz`,校验 SHA-256 后解压到 `$SDKVM_HOME/cli`。
|
|
94
|
+
3. 写入 `$SDKVM_HOME/bin/sdkvm`(Windows 为 `%SDKVM_HOME%\bin\sdkvm.cmd`),并把该目录写入 shell 配置 / 用户 PATH(zsh→`~/.zshrc`,bash→`~/.bash_profile` 或 `~/.bashrc`)。
|
|
95
|
+
|
|
96
|
+
装完后重开终端,或 `source` 对应 rc,再验证:
|
|
97
|
+
|
|
98
|
+
```console
|
|
99
|
+
$ sdkvm version
|
|
100
|
+
1.0.3
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
自定义数据根时,**必须在安装命令的环境里带上** `SDKVM_HOME`(`curl | sh` 不会读取 `~/.zshrc`):
|
|
106
104
|
|
|
107
|
-
|
|
105
|
+
```sh
|
|
106
|
+
SDKVM_HOME=/Volumes/Develop/sdkvm \
|
|
107
|
+
curl -fsSL https://raw.githubusercontent.com/QInJ1995/sdkvm/main/install.sh | sh
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
国内可换下载前缀:
|
|
108
111
|
|
|
109
112
|
```sh
|
|
110
113
|
SDKVM_NODE_DIST=https://npmmirror.com/mirrors/node \
|
|
111
114
|
SDKVM_RELEASE_BASE=https://github.com/QInJ1995/sdkvm/releases \
|
|
112
|
-
|
|
115
|
+
curl -fsSL https://raw.githubusercontent.com/QInJ1995/sdkvm/main/install.sh | sh
|
|
113
116
|
```
|
|
114
117
|
|
|
115
|
-
|
|
118
|
+
### npm / pnpm / yarn / bun(备选)
|
|
116
119
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
+
适合本机已有 Node.js >= 18.15、且希望用包管理器统一管理全局工具的场景。CLI 依赖 `PATH` 上的 `node`;若之后切到 18.15 以前的 Node,CLI 可能无法启动。
|
|
121
|
+
|
|
122
|
+
```sh
|
|
123
|
+
npm install -g sdkvm
|
|
124
|
+
pnpm add -g sdkvm
|
|
125
|
+
yarn global add sdkvm
|
|
126
|
+
bun add -g sdkvm
|
|
120
127
|
```
|
|
121
128
|
|
|
122
129
|
## 升级
|
|
123
130
|
|
|
124
131
|
| 安装方式 | 命令 | 影响范围 |
|
|
125
132
|
|---|---|---|
|
|
126
|
-
|
|
|
127
|
-
|
|
|
133
|
+
| 脚本(推荐) | `sdkvm upgrade` | 只替换 `$SDKVM_HOME/cli`。runtime 与已安装的 SDK 保持不变 |
|
|
134
|
+
| npm 等 | `npm update -g sdkvm` | 只更新 CLI。pnpm / yarn / bun 用各自的全局更新命令 |
|
|
128
135
|
|
|
129
|
-
|
|
136
|
+
数据目录与 CLI 升级无关。脚本安装也可以重新执行安装脚本。
|
|
130
137
|
|
|
131
138
|
## 快速开始
|
|
132
139
|
|
package/dist/index.js
CHANGED
|
@@ -4826,12 +4826,27 @@ function cacheFileName(url) {
|
|
|
4826
4826
|
|
|
4827
4827
|
// src/net/checksum.ts
|
|
4828
4828
|
var HEX64 = /^[0-9a-f]{64}$/i;
|
|
4829
|
+
function hex64(value) {
|
|
4830
|
+
return typeof value === "string" && HEX64.test(value) ? value.toLowerCase() : null;
|
|
4831
|
+
}
|
|
4829
4832
|
function extractExpectedChecksum(text) {
|
|
4830
4833
|
const trimmed = text.trim();
|
|
4831
4834
|
if (trimmed.startsWith("{")) {
|
|
4832
4835
|
try {
|
|
4833
4836
|
const obj = JSON.parse(trimmed);
|
|
4834
|
-
|
|
4837
|
+
const direct = hex64(obj.checksum) ?? hex64(obj.sha256);
|
|
4838
|
+
if (direct) return direct;
|
|
4839
|
+
if (Array.isArray(obj.hashes)) {
|
|
4840
|
+
for (const item of obj.hashes) {
|
|
4841
|
+
if (!item || typeof item !== "object") continue;
|
|
4842
|
+
const hash = item;
|
|
4843
|
+
const alg = typeof hash.alg === "string" ? hash.alg.toLowerCase().replace(/-/g, "") : "";
|
|
4844
|
+
if (alg === "sha256") {
|
|
4845
|
+
const content = hex64(hash.content);
|
|
4846
|
+
if (content) return content;
|
|
4847
|
+
}
|
|
4848
|
+
}
|
|
4849
|
+
}
|
|
4835
4850
|
} catch {
|
|
4836
4851
|
}
|
|
4837
4852
|
return null;
|