# 编程猫 CoCo 源代码计划
**Repository Path**: glacier-studio/CoCo-Source-Code-Plan
## Basic Information
- **Project Name**: 编程猫 CoCo 源代码计划
- **Description**: 还原编程猫 CoCo 编辑器、CoCo Player 等的代码。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-06-22
- **Last Updated**: 2025-08-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 编程猫 CoCo 源代码计划
-blue?style=flat-square)
还原编程猫 CoCo 编辑器、CoCo Player 等的代码。
> [!IMPORTANT]
>
> 停更通知:
>
> 该项目唯一的核心维护者 SLIGHTNING 由于学业繁忙,将无法维护该项目。预计将于 2026 年 6 月 17 日后恢复更新。
## 一、进度
| 模块 | 抓取 | 拆包 | 语法升级 | JSX 反向转换 | 反压缩 |
| :-: | :-: | :-: | :-: | :-: | :-: |
| CoCo Home | ✅ | 75% | ❌ | ❌ | / |
| CoCo Editor | ✅ | 75% | ❌ | ❌ | 0% |
| CoCo Editor Player | ✅ | 75% | ❌ | ❌ | ❌ |
| CoCo Editor ServiceWorker | ✅ | ✅ | ❌ | / | ❌ |
| CoCo Player | ✅ | 75% | ❌ | ❌ | ❌ |
过程说明:
- 抓取:把公开文件的代码放到仓库中;
- 拆包:把打包过的代码拆成模块;
- 语法升级:将降级后的语法转换成降级前的;
- JSX 反向转换:将转换后的 `React.createElement` 调用转换为 JSX;
- 反压缩:给模块名称、代码中的量的名称等重新设置一个有意义的名称。
符号说明:
- `✅`:全部完成;
- `❌`:一点没动;
- `/`:不需要;
- `xx%`:完成比例(估计值,可能不准确)。
## 二、构建和运行
### 1.准备
#### (1)克隆仓库到本地
```sh
git clone https://github.com/glacier-studio/CoCo-Source-Code-Plan.git
# 或从 Gitee 克隆:
# git clone https://gitee.com/glacier-studio/CoCo-Source-Code-Plan.git
```
#### (2)安装依赖
```sh
$ npm install --legacy-peer-deps
```
### 2.解包代码
仓库中已包含解包后的代码,无需解包即可使用。
当然你也可以重新解包代码。
解包代码的设备性能要求:
- 有 4GiB 的行运行内存可用。
提示:如果设备内存不多,Node.js 的内存限制会比较小,可以通过设置环境变量 `NODE_OPTIONS = "--max_old_space_size=4096"` 来调大内存限制。
```sh
$ npm run unpack:home
$ npm run unpack:shared
$ npm run unpack:editor
$ npm run unpack:editor-service-worker
$ npm run unpack:editor-player
$ npm run unpack:player
```
解包后有些代码有些小问题,请自行解决。
### 3.以开发模式打包运行解包后的代码
#### (1)启动开发服务
```sh
$ npm run start
```
#### (2)在浏览器中打开
在本机浏览器中打开 。
### 4.构建生产版本
```sh
$ npm run build
```
提示:你可以使用下面这个命令在本地启动一个服务器来查看生产版本。
```sh
$ npm run serve
```
依然是在 中打开。
## 三、目录结构说明
### 1.公开文件(/public)
编程猫 CoCo 编辑器的公开代码文件(经格式化)。
不保留历史版本。
当存储的前版本为 v1.21.7。
### 2.未还原的(/unrestored)
已拆成模块但还未还原的代码。
### 3.源文件(/src)
还原过的的代码。
## 四、参与贡献
### 1.直接贡献
> [!WARNING]
>
> 请注意:
>
> 参与直接贡献时,请确保做出修改后的代码能够正常打包运行。
#### (1)解包代码
本项目核心解包代码(/scripts/unpack.ts)由于功能复杂且经常改动,多人编辑容易产生冲突,暂不接受 PR,如果确实想要贡献核心解包代码,请提前与我们联系,以便减少冲突。
目前一下部分需要贡献:
- 编辑器依赖项排除。
#### (2)反压缩
请安如下步骤进行:
1.把目标代码移动到 `/src` 目录中恰当的位置;
2.在相应的解包程序中添加移动规则;
3.重命名给模块名称、代码中的量的名称等重新设置一个有意义的名称。
### 2.间接贡献
#### (1)利用还原出来的代码制作其他功能
对于本项目成果的使用同样是对本项目的贡献。
你可以使用本项目还原出来的代码制作其他功能,如:制作绕审核 Player、CoCo Pro。
> [!WARNING]
>
> 但是请注意:
>
> 请不要更改未还原的代码(位于 /unrestored 中的代码),这些代码可能经常变更!