{"id":13522773,"url":"https://github.com/xjq7/runcode","last_synced_at":"2025-03-31T23:32:22.301Z","repository":{"id":61785626,"uuid":"549573571","full_name":"xjq7/runcode","owner":"xjq7","description":"🚀在线编辑器, 支持在线编写,运行代码，支持C、C++、Go、Nodejs、Rust、Java、Python、C#、PHP多种语言","archived":false,"fork":false,"pushed_at":"2025-02-19T07:41:34.000Z","size":2258,"stargazers_count":299,"open_issues_count":5,"forks_count":54,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-02-19T08:29:38.250Z","etag":null,"topics":["cpp","docker","go","java","javascript","python","rust","typescript","wasm"],"latest_commit_sha":null,"homepage":"https://r.xjq.icu","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xjq7.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-11T11:53:19.000Z","updated_at":"2025-02-19T07:41:38.000Z","dependencies_parsed_at":"2023-12-06T03:25:30.446Z","dependency_job_id":"9747d12e-2ecd-4afa-bbf8-6d65e13ed427","html_url":"https://github.com/xjq7/runcode","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xjq7%2Fruncode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xjq7%2Fruncode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xjq7%2Fruncode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xjq7%2Fruncode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xjq7","download_url":"https://codeload.github.com/xjq7/runcode/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246558108,"owners_count":20796696,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","docker","go","java","javascript","python","rust","typescript","wasm"],"created_at":"2024-08-01T06:00:52.138Z","updated_at":"2025-03-31T23:32:17.288Z","avatar_url":"https://github.com/xjq7.png","language":"TypeScript","readme":"## runcode\n\n在线代码运行编辑器\n\n语言支持度\n\n- C++ 11\n\n- C\n\n- Java\n\n- Rust lts\n\n- Nodejs lts\n\n- Go lts\n\n- C# lts\n\n- Python3\n\n- php\n\n代码格式化支持\n\n- C++\n\n- C\n\n- Java\n\n- Nodejs\n\n## Js-challenges\n\n前端编程题挑战\n\n## 创建题目\n\n在项目根目录下运行\n\n```sh\npnpm qs:create \u003c你的题目名\u003e\n\n# 例如我创建 demo 题目\npnpm qs:create demo\n```\n\n运行完之后会在 question/FrontEnd 目录下生成以下文件\n\n- demo\n  - answer.md\n  - answer.mjs\n  - index.md\n  - index.mjs\n  - test.mjs\n\n## 生成静态文件\n\n在项目根目录下运行\n\n```sh\npnpm qs:generate\n```\n\n运行后会在 server 目录下生成 qs.json 文件\n\n然后启动服务端, 服务端 数据来源于 qs.json\n\n## 开发\n\n前置条件\n\nnodejs \u003e= 14.20.0\n\n包管理工具 pnpm 安装\n\n```sh\nnpm install pnpm -g\n```\n\n### server\n\n- koa + typescript + dockerode\n\n1. 构建镜像\n\n前置条件, 安装了 docker, docker 需要设置端口 为 2375\n\n在 centos 7 端口修改方法:\n在配置文件里 ExecStart=/usr/bin/dockerd 这串后面加上 -H tcp://0.0.0.0:2375 , 然后重启 docker\n我的配置文件在 /usr/lib/systemd/system/docker.service 这个路径\n配置文件示例\n\n![Alt text](images/image.png)\n\n未构建的镜像, 在编辑器里 run 代码时会报镜像 404, 所以开发过程中无需全部构建, 构建需要的语言环境即可\n\n- 构建 C++ 镜像\n\n  ```bash\n    cd server/src/docker/cpp\n    docker build -t cpp:11 .\n  ```\n\n- 构建 rust 镜像\n\n  ```bash\n    cd server/src/docker/rust\n    docker build -t rust:lts .\n  ```\n\n- 构建 python3 镜像\n\n  ```bash\n    cd server/src/docker/python3\n    docker build -t python:3 .\n  ```\n\n- 构建 python2 镜像\n\n  ```bash\n    cd server/src/docker/python2\n    docker build -t python:2 .\n  ```\n\n- 构建 go 镜像\n\n  ```bash\n    cd server/src/docker/go\n    docker build -t go:lts .\n  ```\n\n- 构建 nodejs 镜像\n\n  ```bash\n    cd server/src/docker/nodejs\n    docker build -t nodejs:lts .\n  ```\n\n- 构建 java 镜像\n\n  ```bash\n    cd server/src/docker/java\n    docker build -t java:lts .\n  ```\n\n- 构建 C# 镜像\n\n  ```bash\n    cd server/src/docker/dotnet\n    docker build -t mono:lts .\n  ```\n\n- 构建 php 镜像\n\n  ```bash\n    cd server/src/docker/php\n    docker build -t php:8 .\n  ```\n\n2. 安装依赖\n\n   ```sh\n   cd server\n   pnpm i\n   ```\n\n3. 启动\n\n   ```sh\n   pnpm dev\n   ```\n\n### client\n\n- vite + react + typescript + antd\n\n- UI\n\n  tailwindcss, 原子化 css, 在个人项目里使用优势很大, 节省时间、代码\n\n  且都支持按需引入, 体积更小\n\n- 状态管理\n\n  mobx、mobx-react-lite、mobx-persist-store\n\n- 编辑器使用 monaco-editor\n\n  高亮、输入提示、部分语言代码格式化、多主题\n\n  引入 clang-format wasm 模块实现 C/C++/Java 语言的代码格式化\n\n1. 安装依赖\n\n   ```sh\n   cd client\n   pnpm i\n   ```\n\n2. 编译 tailwindcss\n\n   ```sh\n   # 启动后另开终端启动服务\n   pnpm build:tailwind:watch\n   ```\n\n3. 启动服务\n\n   ```sh\n   # 起开发环境,需要起 server\n   pnpm dev\n   # 起生产环境\n   pnpm prod\n   ```\n\n## 部署\n\n### server\n\n1. 服务端环境\n\n- nodejs\n- pm2\n- docker\n- pnpm\n\n2. 编译\n\n进入 server 目录\n\n```sh\ncd server\npnpm i\npnpm build\n```\n\n3. 启动服务\n\n```sh\npnpm deploy\n```\n\n### client\n\n进入 client 目录\n\n1. 安装依赖\n\n```sh\npnpm i\n```\n\n2. 构建\n\n```sh\npnpm build\n```\n\n3. 使用 nginx 代理静态资源, 构建好的静态资源在 dist 目录下\n\n主要是 html 文件, 其他静态资源部署到我的 cdn 上了\n\n## commit 规范\n\n- feat：新功能（feature）\n- fix：修补 bug\n- docs：文档（documentation），只改动了文档部分\n- style： 格式（不影响代码运行的变动），例如去掉空格、改变缩进\n- refactor：重构（即不是新增功能，也不是修改 bug 的代码变动）\n- test：添加测试或者修改现有测试\n- chore：构建过程或辅助工具的变动\n- perf：提高性能的改动\n- ci：自动化流程配置修改、与 CI（持续集成服务）有关的改动\n- revert：回滚到上一个版本，执行 git revert 打印的 message\n","funding_links":[],"categories":["TypeScript","Dev-Tools"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxjq7%2Fruncode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxjq7%2Fruncode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxjq7%2Fruncode/lists"}