遵循这些准则在您的系统上本地建立免费CodeCamp。 如果您想要定期捐款,这将是强烈推荐的。 对于一些贡献的工作流,您需要在本地运行免费CodeCamp。 例如,预览编码挑战或调试和修复编解码器中的bug。 > [!提示] 如果您不想在本地建立免费CodeCamp,请使用 Gitpod,免费的在线开发环境。 > > [![在 Gitpod 中打开](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp) > > (在您的浏览器中为FreeCodeCodeCamp启动一个现成的开发环境。) ## 准备您的本地机 首先为您的操作系统安装必备软件。 我们主要支持开发 **\*nix** 系统。 我们的工作人员和社区贡献者经常使用安装在 Ubuntu 和 macOS 上的工具与代码库合作。 我们还通过 WSL 2 支持Windows 10,您可以通过 [阅读本指南](/how-to-setup-wsl) 来准备它。 一些社区成员还在Windows 10上使用Git for Windows (Git Bash)开发,以及安装在Windows上的其他工具。 我们目前对这种设置没有官方支持,我们建议使用WSL2。 **前提条件:** | 前提条件: | 版本 | 注 | | ---------------------------------------------------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------- | | [Node.js](http://nodejs.org) | `12.x` | [LTS 计划](https://github.com/nodejs/Release#release-schedule) | | npm (随后与节点捆绑) | `6.x` | 没有LTS版本,我们使用与节点LTS捆绑的版本 | | [MongoDB 社区服务器](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [发布笔记](https://docs.mongodb.com/manual/release-notes/), 注意:我们目前在 `3.6`, 计划进行 [升级](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275) | > [!DANGER] 如果您有不同的版本,请安装推荐版本。 我们只能支持推荐版本的安装问题。 详情见 [故障排除](#troubleshooting)。 如果Node.js已经安装在您的机器上,运行以下命令来验证版本: ```console 节点-v npm -v ``` > [!提示] 我们强烈建议更新上面列出的软件的最新稳定版本,也称为长期支持(LTS)版本。 一旦安装了前提条件,您需要准备您的开发环境。 这对许多发展工作流来说是常见的,你只需要做一次这么做。 **按照这些步骤准备好您的发展环境:** 1. 如果您还没有安装 [Git](https://git-scm.com/) 或您最喜欢的 Git 客户端。 更新到最新版本;与您的操作系统捆绑的版本可能已经过时。 2. (可选但推荐) [为 GitHub 设置一个 SSH 密钥](https://help.github.com/articles/generating-an-ssh-key/)。 3. 安装您选择的代码编辑器。 我们强烈建议使用 [Visual Studio 代码](https://code.visualstudio.com/) 或 [Atom](https://atom.io/)。 这些是巨大的、免费的和开源代码编辑器。 4. 为您的代码编辑器设置行号。 您应该在您的编辑器中运行 [ESLint](http://eslint.org/docs/user-guide/integrations.html)并且它将突出任何不符合 [免费CodeCamp的 JavaScript 风格指南](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121) 的内容。 > [!提示] 请不要忽略任何行号错误。 They are meant to **help** you and to ensure a clean and simple codebase. ## 在 GitHub 上派生仓库 [Forcing](https://help.github.com/articles/about-forks/) 是你在GitHub 上获取你自己的 FreeCodeCamp的主要存储库 (a.k.a _repo_) 的一个步骤。 这是非常重要的,因为它允许您在GitHub上使用您自己的免费CodeCamp, 或者下载 (克隆) 您的资源库在本地工作。 稍后,您将能够通过拉取请求(PR)从分叉中提取到主存储库。 > [!TIP] 主仓库在 `https://github.com/freeCodeCamp/freeCodeCode` 经常被称为 `上游的` 仓库. > > 您在 `https://github.com/YOUR_USER_NAME/freeCodeCamp` 的叉经常被称为 `来源` 资源库。 **按照这些步骤派生 `https://github.com/freeCodeCamp/freeCodeCodeCamp` 仓库:** 1. 转到GitHub上的免费CodeCamp仓库: [https://github.com/freeCodeCodeCamp/freeCodeCamp](https://github.com/freeCodeCamp/freeCodeCamp) 2. 点击接口右上角的“Fork”按钮([此处有更多详细信息](https://help.github.com/articles/fork-a-repo/)) 3. 当仓库被解压后,你将被带到你的免费CodeCamp 仓库的副本: `https://github.com/YOUR_USER_NAME/freeCodeCamp`
如何派生GitHub 上的 FreeCodeCamp (screshot)
如何在 GitHub 上派生免费CodeCamp
## 从GitHub 复制你的叉文件 [克隆](https://help.github.com/articles/cloning-a-repository/) 是您的位置 **下载** 从 `远程` 处下载的仓库副本,由您或其他人拥有。 In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`. 在本地机器上运行这些命令: 1. 在您的工程目录中打开终端/命令提示/Shell _i.e. : `/你的项目目录/`_ 2. 克隆你的免费CodeCamp,用你的 GitHub 用户名替换 `YOUR_USER_NAME` ```console git 克隆--depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git ``` 这将下载整个免费CodeCamp 仓库到您的项目目录。 注意: `--depth=1` 创建了一个你的叉中的浅色克隆,只有最近的历史/提交。 ## 设置父同步 既然你已经下载了你的叉副本,你将需要设置一个 `上游` 远程到父仓库中。 [如前面提到的](#fork-the-repository-on-github), 主仓库已被调用 `上游的` 仓库. 你的叉被称为 `来源` 仓库。 除了 `来源于` 仓库外,您还需要本地克隆的引用到 `上游` 存储库。 这是为了您可以同步主仓库中的更改,而无需重复叉和克隆。 1. 将目录更改为新的 FreeCodeCamp 目录: ```console cd 免费CodeCamp ``` 2. 添加远程引用到主FreeCodeCamp仓库: ```console git 远程添加上游版 https://github.com/freeCodeCamp/freeCodeCamp.git ``` 3. 确保配置正确: ```console git 远程-v ``` 输出应该像下面这样: ```console 原点 https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) 原点 https://github.com/YOUR_USER_NAME/freeCodeCamp.git (pack) 上游流https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) 上游流 https://github.com/freeCodeCamp/freeCodeCamp.git (pus) ``` ## 在本地运行免费CodeCamp 现在你有一个本地的免费CodeCamp,你可以按照这些指示在本地运行。 这将允许您: - 预览将出现在学习平台上的页面. - 4. 关于与用户界面有关的问题和改进的工作。 - 与应用程序服务器和客户端应用程序调试和修复问题。 如果您确实遇到了问题,请先对您的问题进行网页搜索,并查看是否已经回答过了。 如果您找不到解决方案, 如果尚未报告,请搜索我们的 [GitHub 问题](https://github.com/freeCodeCamp/freeCodeCamp/issues) 页面并报告问题。 一如既往, 觉得可以随时连接到我们的 [贡献者聊天室在 Gitter](https://gitter.im/FreeCodeCamp/Contributors) 或 [我们的 Discord 服务器](https://discord.gg/6vJYm9V), 快速查询。 > [!提示] 如果你只是编辑文件,你可能会跳过本地免费运行CodeCamp。 例如,执行 `rebase`, 或解决 `合并` 冲突。 > > 以后您总是可以返回说明的这一部分。 You should **only** skip this step if you do not need to run the apps on your machine. > > [跳过进行更改](#making-changes-locally)。 ### 配置依赖项 #### 第 1 步:设置环境变量文件 默认 API 密钥和环境变量存储在文件 `sample.env` 中。 此文件需要复制到一个名为 `.env` 的新文件,该文件是在安装过程中动态访问的。 ```console # 创建一个 "sample.env" 的副本,并命名它".env"。 # 用必要的 API 密钥和密钥填充它: # macOS / Linux cp 样本。 nv .env # Windows 复制 sample.env .env ``` `.env` 文件中的密钥 _并不需要更改_ 才能本地运行应用程序。 您可以保留从 `sample.env` 复制的默认值。 > [!提示] 如果您想要使用像Auth0 或 Algolia 这样的服务,请记住。 您必须为这些服务获取您自己的 API 密钥,并相应地在 `中编辑条目。 nv` 文件。 #### 步骤 2: 安装依赖关系 此步骤将安装应用程序运行所需的依赖关系: ```console npm ci ``` #### 步骤 3: 启动 MongoDB 并种子数据库 在本地运行应用程序之前,您需要启动 MongoDB 服务。 > [!注意] 除非您在 MongoDB 中运行的设置不同于默认, 在 `中存储为 MONGOHQ_URL` 值的 URL。 nv 文件应该正常工作。 如果您正在使用自定义配置,请根据需要修改此值。 在 MongoDB 服务器单独的终端中启动: - 在 macOS & Ubuntu: ```console mongod ``` - 在 Windows上,您必须指定 `怪物` 双进制的完整路径 ```console "C:\Program Files\MongoDB\Server\3.6\bin\mongod" ``` 请确保将 `3.6` 替换为您已安装的版本 > [!提示] 您可以通过安装它作为后台服务来避免每次启动 MongoDB 。 您可以 [在他们为您的操作系统提供的文档中了解更多关于它的信息](https://docs.mongodb.com/manual/administration/install-community/) 接下来,让我们来做数据库的种子。 在这个步骤中,我们运行下面的命令,将MongoDB 服务器填充一些服务所需的初始数据集。 除其他外,其中包括一些计划。 ```console npm 运行种子 ``` #### 步骤 4: 启动免费CodeCam客户端应用程序和 API 服务器 您现在可以启动 API 服务器和客户端应用程序。 ```console npm 运行开发 ``` 这个单一命令将会发射所有的服务,包括API服务器和客户端应用程序供您使用。 > [!注意] 一旦准备就绪, 打开网页浏览器和 **访问 ** 如果应用程序加载,恭喜——你都已设置! 您现在有一个免费CodeCamp的整个学习平台在您的本地机器上运行。 > [!提示] API 服务器在 `http://localhost:3000` 上提供 API。 Gatsby应用在 `http://localhost:8000` 为客户端应用程序服务 > 如果您访问 ,您应该看到可用的 API。 ## 使用本地用户登录 您的本地设置自动将本地用户添加到数据库中。 点击 `登录` 按钮将自动认证您进入本地应用程序。 然而,访问用户组合页面有点微妙。 在发展中, Gatsby接管了客户端页面的服务,因此在本地工作时,您将获得用户组合的 `404` 页面。 只需点击 **"预览自定义 404 页面"** 按钮会将您转到正确的页面。
如何在本地工作时登录 (屏幕截图)
如何在本地工作时登录
## 在当地进行变化 您现在可以对文件进行更改并将您的更改提交给您的本地叉。 跟随这些步骤: 1. 验证您在 `master` 分支: ```console git status ``` 您应该获得如下输出: ```console 对于分支管理员 您的分支是最新的,带有“原始/主” 无需提交,工作目录清理 ``` 如果您不在主目录,或者您的工作目录没有被清理,解决任何未处理的文件/提交和结帐 `主`: ```console git 结帐管理员 ``` 2. 从上游的FreeCodeCamp `master` 分支同步到您的本地主分支的最新更改: > [!警告] 如果你有任何未完成的拉取请求是从你的叉的 `主` 分支提出的 在这一步结束时,你会丢失他们。 > > 您应该确保您的拉取请求在执行此步骤之前由版主合并。 To avoid this scenario, you should **always** work on a branch other than the `master`. 这个步骤 **将同步来自免费CodeCamp主要仓库的最新更改**。 重要的是您尽可能频繁地将分支重新建立在最新的 `上面/主` 上面,以避免以后发生冲突。 更新您本地的 FreeCodeCamp 上游版本库: ```console git 获取上流 ``` 使用免费CodeCamp大师重置您的主分支: ```console git 重置 --hard 上游/管理员 ``` 将您的主分支推送到您的原始位置,在GitHub上的叉上有一个干净的历史记录: ```console git 推送原始主--force ``` 您可以通过执行一个分支来验证您当前的主匹配的上游/主: ```console git diff 上游/大师 ``` 生成的输出应为空。 3. 创建新分支: 为每个问题单独工作一个分支有助于您保持本地工作副本干净。 你永远不应该在 `主` 上工作。 这将使您的免费CodeCamp的副本土生土长,并且您可能必须从新的克隆或叉开始。 检查您是否像以前解释过的那样在 `主` 上,并从那里关闭分支: ```console git 结帐-b fix/update-guide-for-xyz ``` 您的分支名称应该以 `修复/`、 `feature/`、 `docs/`等开头。 避免在分支中使用问题编号。 保持其简短、有意义和独特性。 良好的分支名称的一些例子包括: ```md 修复/update-challenges-for-action fix/update-guide-for-html-css fix/platform-bug-sign-in issues feat/add-guide-article-for-javascript translate/add-spanish-basic-html ``` 4. 在您最喜欢的文本编辑器中编辑页面并使用代码。 5. 一旦您对更改感到满意,您应该可以在本地免费运行CodeCamp来预览更改。 6. 请确保您修复任何错误并检查您更改的格式。 7. 检查并确认您正在更新的文件: ```console git status ``` 这将显示您编辑的 `未发布的` 文件列表。 ```console 对于分支功能/文档 您的分支是最新的 "upstream/feate/documentation"。 更改尚未提交: (使用 git add/rm ... 更新将要执行的内容 (使用 "git 结帐" - ." 放弃工作目录中的更改) 修改: CONTRIBUTING。 d 修改:docsor README.md 修改:docs/howto setup-freecodecamp-local。 d 修改: docs/how-work-on-guide-articles.md ... ``` 8. 阶段更改并提交: 在这个步骤中,您只应标记您自己编辑或添加的文件。 您可以执行重置和解析文件,如果需要,您不打算更改这些文件。 ```console git 添加路径到/my/changed/file.ext ``` 或者您可以将所有 `未发布的` 文件添加到暂存区域: ```console git 添加 ``` 只有移到暂存区域的文件才会在提交时被添加。 ```console git status ``` 输出: ```console 对于分支功能/文档 您的分支是最新的 "upstream/feate/documentation"。 要进行的更改: (使用 "git reset HEAD ..." to unstage) 修改:CONTRIBUTING.md 修改:docs/README.md 修改:docs/howto setup-freecodecamp-locally.md 修改:docs/how-work-on-guide-articles.md ``` 现在,您可以用这样一个简短的消息来提交您的更改: ```console git 提交 -m "修复:我的短提交信息" ``` 一些例子: ```md 修复:为 Java 更新指南文章 - 循环 功能:为alexa 技能添加指南文章 ``` 可选: 我们强烈建议发表一项常规承诺信息。 这是一个好的做法,您将在一些受欢迎的开源仓库中看到。 作为开发者,这鼓励您遵循标准做法。 常规承诺信息的一些例子是: ```md 修复:更新 HTML 指南文章 修复:更新 Travis-CI 版本的脚本 功能:为JavaScript 钩子 文档添加文章:更新贡献指南 ``` 保持这些短篇幅不超过50个字符。 您总是可以在提交消息的描述中添加额外信息。 这不需要任何额外的时间,只需要一个非常规信息,例如“更新文件”或“添加索引.md” 您可以了解更多关于您为什么要在这里使用常规提交 [](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits)。 9. 如果您意识到需要编辑文件或在提交后更新提交消息,您可以在编辑文件后这样做: ```console git 提交 --revision ``` 这将打开一个默认文本编辑器,如 `nano` or `vi` ,您可以在那里编辑提交的消息标题并添加/编辑描述。 10. 接下来,你可以将你的更改推到你的叉中: ```console git 推送来源分支/名称到这里 ``` ## 提出合并请求(PR) 在您提交了您的更改后,请在这里检查 [如何打开一个合并请求](how-to-open-a-pull-request.md)。 ## 快速命令参考 快速引用您在本地工作时需要的命令。 | 命令 | description | | ---------------------------------------------------------- | ---------------------------------- | | `npm ci` | 安装/重新安装所有依赖关系和引导不同的服务。 | | `npm 运行种子` | 解析所有挑战Markdown文件并将其插入MongoDB。 | | `npm 运行开发` | 启动免费CodeCamp API 服务器和客户端应用程序。 | | `npm 测试` | 在系统中运行所有 JS 测试,包括客户端、服务器、 直线和挑战测试。 | | `npm 运行测试:客户端` | 运行客户端测试套件。 | | `npm 运行测试:课程` | 运行课程测试套件。 | | `npm 运行测试:course --block='Basic HTML 和 HTML5'` | 测试特定方块。 | | `npm 运行 test:course --superblock='responsible web-design'` | 测试一个特定的超级块。 | | `npm 运行测试课程全文输出` | 运行课程测试套件,而不会在第一个错误后进行保养。 | | `npm 运行测试:服务器` | 运行服务器测试套件。 | | `npm 运行e2e` | 运行 Cypress 端口来结束测试。 | | `npm 运行清理` | 卸载所有依赖关系并清理缓存。 | ## 故障排除 ### 安装推荐前提条件的问题 我们经常在最新或最受欢迎的操作系统上开发,如macOS 10.15或更高版本,Ubuntu 18.04或更高版本,以及Windows 10(WSL2)。 建议在资源上研究您的具体问题,例如谷歌、堆栈溢出和堆栈交换。 有一个很好的机会让某人面临同样的问题,你的具体查询已经有一个答案。 如果您处于不同的操作系统和/或仍在出现问题,请参阅 [获取帮助](#getting-help)。 > [!警告] > > 请避免为前提问题创建 GitHub 问题。 它们超出了该项目的范围。 ### UI、字体、构建错误等问题。 如果您面临UI问题,字体或看到构建错误,清理可能有用: ```console npm 运行清洁 npm ci npm 运行种子 npm 运行开发 ``` 或 使用快捷方式 ``` npm 运行清理和开发 ``` 如果你继续面临建筑物问题,清理工作区是推荐的。 在交互模式下使用 `git 净化` ``` git 清理-ifdX ```
如何清理git 解压过的文件(屏幕截图)
如何清理git 解压过的文件
### API、登录、挑战提交等问题 如果您不能登录,而是看到一个带有错误消息的横幅,它将被报告给FreeCodeCodeCamp, 请再次检查您的本地端口 `3000` 是否没有被另一个程序使用。 **在 Linux / macOS / WSL 窗口上 - 从终端:** ```console netstat -ab | grep "3000" tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN ``` **在 Windows 上 - 从高亮的电源架:** ```powershell netstat -ab | 选择字符串"3000" TCP 0.0.0:3000DESKTOP 列表正在注意中 ``` ### 安装依赖关系的问题 如果您在安装依赖时遇到错误, 请确保您不在受限制的网络中,或您的防火墙设置不会阻止您访问资源。 首次设置可能需要一段时间,取决于您的网络带宽。 耐心等待,如果你仍然被卡住,我们使用GitPod 而不是脱机设置。 ## 获取帮助 如果您被卡住并需要帮助。 通过在 [中在我们的论坛](https://forum.freecodecamp.org/c/contributors) 上询问贡献者的类别或在 Gitter 上的 [贡献者聊天室](https://gitter.im/FreeCodeCamp/Contributors) 来让我们知道。 在您的浏览器控制台或Bash / Terminal / Command 行中可能有错误,将有助于识别问题。 在您的问题描述中提供此错误信息,以便其他人能够更容易地识别问题并帮助您找到解决方案。