# 前言

# 项目简介

FS-Context一个名叫FallingShrimp的Furry觉得做拓展简直就是种折磨于是闲着没事研究的 一个易用的TypeScript上下文,用于开发通用于TurboWarp/GandiIDE等ScratchMod的积木拓展。提供了一些拓展开发中较常用的工具/脚手架。

本项目仅仅由于个人兴趣而完成,开发目的仅为探索,也许代码也有优化空间,欢迎各位大佬提出建议。

# 项目初衷

不管在什么平台下,开发拓展都非常的折磨,缺少类型提示/自动补全/代码不易读,以及不同平台对runtimevm的沙盒机制都有严重差异。通用拓展需要编写非常多的并不必要的冗余代码。

因此,本项目旨在提供一些TS类型提示工具集,同时将不同平台加载拓展/获取vm等频繁且常用的操作封装,开发者不需要重复制造轮子,可以专注于积木逻辑的开发。

# 项目结构

root
- config/
| - loader.ts
| - server.js
||| - ...
- node_modules/
| - ...
- src/
| - fs-context/
||| - ...
| - extension.ts
||| - ...
- package.json
- tsconfig.json
- index.html
- webpack.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 文件/夹 解释

  • extension.ts:拓展入口文件,定义了l10n、积木、菜单等内容
  • fs-context:框架核心代码
  • config/loader.ts:拓展加载器的配置文件
  • config/server.js:调试服务器的配置文件
  • package.json:包配置文件
  • tsconfig.json:TypeScript配置文件
  • webpack.config.js:Webpack配置文件
  • index.html:WaterBox界面的HTML模板

# 快速上手

只需三步

注意:不要使用npm来管理包!它会生成错误的依赖树!

  1. 安装依赖
yarn install
1
  1. 启动开发服务器
yarn dev:ui
1
  1. 进行ESLint检查
yarn lint
1
  1. 自动修复ESLint错误
yarn lint:fix
1
  1. 编译生产环境代码
yarn dist:ext
1

对于新的拓展API文档,访问概念和API

# 欢迎贡献

Github (opens new window)
欢迎提交IssuePull Request,欢迎Star

已储存的提议和建议
(opens new window) 使用TS的装饰器特性定义拓展积木 转到:block-decorator.md 提出者:FurryR
(opens new window) 新写法的积木文本解析器 转到:text-parser.md 提出者:FallingShrimp
(opens new window) 添加eslint支持 转到:eslint-support.md 提出者:MoreBugOfDog
(opens new window) 自定义积木参数类型和对应加载器 转到:arg-loader.md 提出者:FallingShrimp
(opens new window) 实现动态参数,类似Rest 转到:rest-args.md 提出者:MoreBugOfDog

# 项目贡献者

(opens new window) FallingShrimp的头像 FallingShrimp 开发文档
(opens new window) FurryR的头像 FurryR 代码优化
(opens new window) Cyberexplorer的头像 Cyberexplorer 示例拓展测试
(opens new window) MoreBugOfDog的头像 MoreBugOfDog 代码优化功能建议