loong64-electron 31.7.7
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/LICENSE +21 -0
- package/README.md +115 -0
- package/checksums.json +12 -0
- package/cli.js +25 -0
- package/electron.d.ts +23652 -0
- package/index.js +21 -0
- package/install.js +109 -0
- package/package.json +28 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Copyright (c) Electron contributors
|
|
2
|
+
Copyright (c) 2013-2020 GitHub Inc.
|
|
3
|
+
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
a copy of this software and associated documentation files (the
|
|
6
|
+
"Software"), to deal in the Software without restriction, including
|
|
7
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be
|
|
13
|
+
included in all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
### 📝 **`npm pkg set overrides.electron="loong64-electron@31.7.7"` 使用说明**
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
#### ✅ **命令目的**
|
|
6
|
+
此命令用于在当前项目的 `package.json` 文件中,**设置一个依赖覆盖规则**,将所有对 `electron` 包的依赖,替换为安装 `loong64-electron@31.7.7`。
|
|
7
|
+
|
|
8
|
+
> 它是实现“用龙芯版 Electron 替代官方 Electron”这一目标的核心配置步骤。
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
#### 🔧 **为什么要运行这个命令?**
|
|
13
|
+
|
|
14
|
+
1. **解决依赖冲突**
|
|
15
|
+
某些项目或工具链(如 `electron-builder`)会直接依赖 `electron`。如果系统中没有 `electron`,它们会自动从官方 CDN 下载。
|
|
16
|
+
这会导致:
|
|
17
|
+
* 下载失败(因为官方无龙芯架构支持)。
|
|
18
|
+
* 安装后无法运行(架构不匹配)。
|
|
19
|
+
|
|
20
|
+
2. **实现无缝替代**
|
|
21
|
+
通过 `overrides`,你可以让开发者在代码中写 `require('electron')`,但实际加载的是你提供的 `loong64-electron` 版本。
|
|
22
|
+
这样,**无需修改任何源码**,就能让应用在龙芯机器上正常运行。
|
|
23
|
+
|
|
24
|
+
3. **避免手动编辑 `package.json`**
|
|
25
|
+
此命令是 `npm` 官方推荐的、安全的自动化方式,可以完全避免手动打开文本编辑器修改文件。
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
#### 📌 **运行前的准备**
|
|
30
|
+
|
|
31
|
+
确保以下条件已满足:
|
|
32
|
+
- 你的项目根目录已有 `package.json`。
|
|
33
|
+
- `loong64-electron@31.7.7` 已发布到 npm(或私有仓库)。
|
|
34
|
+
- 你已在本地使用 `npm config set overrides '...'` 或其他方式设置了全局配置(可选,但建议)。
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
#### 🚀 **运行命令**
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm pkg set overrides.electron="loong64-electron@31.7.7"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
> ✅ 命令执行成功后,不会有任何输出,但 `package.json` 会被自动更新。
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
#### 📂 **运行后的结果**
|
|
49
|
+
|
|
50
|
+
1. **`package.json` 被修改**
|
|
51
|
+
添加或更新了 `overrides` 部分:
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"name": "my-project",
|
|
55
|
+
"version": "1.0.0",
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"some-package": "^1.0.0"
|
|
58
|
+
},
|
|
59
|
+
"overrides": {
|
|
60
|
+
"electron": "loong64-electron@31.7.7"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
2. **`node_modules/electron` 的内容被替换**
|
|
66
|
+
当你下次运行 `npm install` 时:
|
|
67
|
+
* npm 会读取 `overrides` 规则。
|
|
68
|
+
* 它会去下载 `loong64-electron@31.7.7`。
|
|
69
|
+
* 最终,`node_modules/electron` 目录中存放的,是 `loong64-electron@31.7.7` 的完整二进制和源码。
|
|
70
|
+
|
|
71
|
+
3. **开发者体验不变**
|
|
72
|
+
代码中仍可使用:
|
|
73
|
+
```js
|
|
74
|
+
const { app } = require('electron'); // 依然有效!
|
|
75
|
+
```
|
|
76
|
+
只是底层加载的是龙芯版本。
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
#### ✅ **验证方法**
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# 1. 查看 node_modules/electron/package.json
|
|
84
|
+
cat node_modules/electron/package.json
|
|
85
|
+
|
|
86
|
+
# 2. 输出应包含:
|
|
87
|
+
{
|
|
88
|
+
"name": "loong64-electron",
|
|
89
|
+
"version": "31.7.7"
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
> ✅ 证明替换成功!
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
#### ⚠️ **注意事项**
|
|
98
|
+
|
|
99
|
+
- 如果 `overrides` 已存在,请使用 `npm pkg set overrides.electron="..."` 来局部更新,而不是覆盖整个对象。
|
|
100
|
+
- 确保 `loong64-electron@31.7.7` 的功能与官方 `electron@31.7.7` 兼容,否则可能导致应用崩溃。
|
|
101
|
+
- 此操作仅影响本次 `npm install`,若需永久生效,请提交 `package.json` 到 Git。
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
### ✅ **总结**
|
|
106
|
+
|
|
107
|
+
| 项目 | 内容 |
|
|
108
|
+
| :--- | :--- |
|
|
109
|
+
| **命令** | `npm pkg set overrides.electron="loong64-electron@31.7.7"` |
|
|
110
|
+
| **目的** | 让 `electron` 依赖指向 `loong64-electron` |
|
|
111
|
+
| **结果** | `node_modules/electron` 存放龙芯版 Electron |
|
|
112
|
+
| **优点** | 无需改代码,无需手动编辑文件,部署简单 |
|
|
113
|
+
|
|
114
|
+
> 🎯 **一句话总结**:
|
|
115
|
+
> 这条命令是实现“龙芯兼容性”的关键一步——它让所有依赖 `electron` 的工具,都自动使用你提供的专用版本,而无需任何感知。
|
package/checksums.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"electron-v31.7.7-linux-loong64.zip": "e0c756ca8a66dde3bece6ad902f152f539365ce7442d6353871d7c54d1c0f47b",
|
|
3
|
+
"chromedriver-v31.7.7-linux-loong64.zip": "9f5f5d334c12fd51578dbb08de19a796e33074dfd34b27ef503d2cfc8f9801c1",
|
|
4
|
+
"ffmpeg-v31.7.7-linux-loong64.zip": "28cde274e3eb41eaebba13f1b7bce6207eb0ff704aea57a0b5cdd5f05cc0934c",
|
|
5
|
+
"mksnapshot-v31.7.7-linux-loong64.zip": "fc29cf9577ca51f2a9b9dc1e4a050d032a97651cf57f33f97afab2bccc0f3fd55",
|
|
6
|
+
"libcxx-objects-v31.7.7-linux-loong64.zip": "3be44075d9e1c51d3f8d57fa11ec3309d794a18c6d85cfccb41b921d9b34b319",
|
|
7
|
+
"hunspell_dictionaries.zip": "0304fb074f92103daa0d848feb2ee00e670ec92fb81015dcded43a4ec34172c9",
|
|
8
|
+
"libcxx_headers.zip": "b8c47e655009190c90e38f604fd2fa4bbb54c34c4937ae74ab52e77184ab53e2",
|
|
9
|
+
"libcxxabi_headers.zip": "f13c9e65d066d4162cf28ef75bf72a6f5af321d890dab771afab2bccc0f3fd55",
|
|
10
|
+
"electron-api.json": "87f9256d33e469a4fe0a211c5cc3165478c115ae1729581f1364bff4a2175bc6",
|
|
11
|
+
"electron.d.ts": "8c97aff04f7fb10b5e204eac0d8e18ab77d0ecdf19a0f2b0c0957e12e9772dbd"
|
|
12
|
+
}
|
package/cli.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const proc = require('child_process');
|
|
4
|
+
|
|
5
|
+
const electron = require('./');
|
|
6
|
+
|
|
7
|
+
const child = proc.spawn(electron, process.argv.slice(2), { stdio: 'inherit', windowsHide: false });
|
|
8
|
+
child.on('close', function (code, signal) {
|
|
9
|
+
if (code === null) {
|
|
10
|
+
console.error(electron, 'exited with signal', signal);
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
process.exit(code);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const handleTerminationSignal = function (signal) {
|
|
17
|
+
process.on(signal, function signalHandler () {
|
|
18
|
+
if (!child.killed) {
|
|
19
|
+
child.kill(signal);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
handleTerminationSignal('SIGINT');
|
|
25
|
+
handleTerminationSignal('SIGTERM');
|