Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xjq7/runcode
🚀在线编辑器, 支持在线编写,运行代码,支持C、C++、Go、Nodejs、Rust、Java、Python、C#、PHP多种语言,在线 js-challenge
https://github.com/xjq7/runcode
cpp docker go java javascript python rust typescript wasm
Last synced: about 2 months ago
JSON representation
🚀在线编辑器, 支持在线编写,运行代码,支持C、C++、Go、Nodejs、Rust、Java、Python、C#、PHP多种语言,在线 js-challenge
- Host: GitHub
- URL: https://github.com/xjq7/runcode
- Owner: xjq7
- License: gpl-2.0
- Created: 2022-10-11T11:53:19.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-19T14:45:59.000Z (6 months ago)
- Last Synced: 2024-08-02T06:14:27.388Z (5 months ago)
- Topics: cpp, docker, go, java, javascript, python, rust, typescript, wasm
- Language: TypeScript
- Homepage: https://r.xjq.icu
- Size: 1.98 MB
- Stars: 247
- Watchers: 4
- Forks: 47
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ops - xjq7/runcode - 2.0|269|2022-10-11|2024-09-06 | 在线编辑器, 支持在线编写, 运行代码,支持 C、C++、Golang、Nodejs、Rust、Java、Python、C#、PHP 多种语言 | (Dev-Tools)
README
## runcode
在线代码运行编辑器
语言支持度
- C++ 11
- C
- Java
- Rust lts
- Nodejs lts
- Go lts
- C# lts
- Python3
- php
代码格式化支持
- C++
- C
- Java
- Nodejs
## Js-challenges
前端编程题挑战
## 创建题目
在项目根目录下运行
```sh
pnpm qs:create <你的题目名># 例如我创建 demo 题目
pnpm qs:create demo
```运行完之后会在 question/FrontEnd 目录下生成以下文件
- demo
- answer.md
- answer.mjs
- index.md
- index.mjs
- test.mjs## 生成静态文件
在项目根目录下运行
```sh
pnpm qs:generate
```运行后会在 server 目录下生成 qs.json 文件
然后启动服务端, 服务端 数据来源于 qs.json
## 开发
前置条件
nodejs >= 14.20.0
包管理工具 pnpm 安装
```sh
npm install pnpm -g
```### server
- koa + typescript + dockerode
1. 构建镜像
前置条件, 安装了 docker, docker 需要设置端口 为 2375
在 centos 7 端口修改方法:
在配置文件里 ExecStart=/usr/bin/dockerd 这串后面加上 -H tcp://0.0.0.0:2375 , 然后重启 docker
我的配置文件在 /usr/lib/systemd/system/docker.service 这个路径
配置文件示例![Alt text](images/image.png)
未构建的镜像, 在编辑器里 run 代码时会报镜像 404, 所以开发过程中无需全部构建, 构建需要的语言环境即可
- 构建 C++ 镜像
```bash
cd server/src/docker/cpp
docker build -t cpp:11 .
```- 构建 rust 镜像
```bash
cd server/src/docker/rust
docker build -t rust:lts .
```- 构建 python3 镜像
```bash
cd server/src/docker/python3
docker build -t python:3 .
```- 构建 python2 镜像
```bash
cd server/src/docker/python2
docker build -t python:2 .
```- 构建 go 镜像
```bash
cd server/src/docker/go
docker build -t go:lts .
```- 构建 nodejs 镜像
```bash
cd server/src/docker/nodejs
docker build -t nodejs:lts .
```- 构建 java 镜像
```bash
cd server/src/docker/java
docker build -t java:lts .
```- 构建 C# 镜像
```bash
cd server/src/docker/dotnet
docker build -t mono:lts .
```- 构建 php 镜像
```bash
cd server/src/docker/php
docker build -t php:8 .
```2. 安装依赖
```sh
cd server
pnpm i
```3. 启动
```sh
pnpm dev
```### client
- vite + react + typescript + antd
- UI
tailwindcss, 原子化 css, 在个人项目里使用优势很大, 节省时间、代码
且都支持按需引入, 体积更小
- 状态管理
mobx、mobx-react-lite、mobx-persist-store
- 编辑器使用 monaco-editor
高亮、输入提示、部分语言代码格式化、多主题
引入 clang-format wasm 模块实现 C/C++/Java 语言的代码格式化
1. 安装依赖
```sh
cd client
pnpm i
```2. 编译 tailwindcss
```sh
# 启动后另开终端启动服务
pnpm build:tailwind:watch
```3. 启动服务
```sh
# 起开发环境,需要起 server
pnpm dev
# 起生产环境
pnpm prod
```## 部署
### server
1. 服务端环境
- nodejs
- pm2
- docker
- pnpm2. 编译
进入 server 目录
```sh
cd server
pnpm i
pnpm build
```3. 启动服务
```sh
pnpm deploy
```### client
进入 client 目录
1. 安装依赖
```sh
pnpm i
```2. 构建
```sh
pnpm build
```3. 使用 nginx 代理静态资源, 构建好的静态资源在 dist 目录下
主要是 html 文件, 其他静态资源部署到我的 cdn 上了
## commit 规范
- feat:新功能(feature)
- fix:修补 bug
- docs:文档(documentation),只改动了文档部分
- style: 格式(不影响代码运行的变动),例如去掉空格、改变缩进
- refactor:重构(即不是新增功能,也不是修改 bug 的代码变动)
- test:添加测试或者修改现有测试
- chore:构建过程或辅助工具的变动
- perf:提高性能的改动
- ci:自动化流程配置修改、与 CI(持续集成服务)有关的改动
- revert:回滚到上一个版本,执行 git revert 打印的 message