Algunos de estos flujos de trabajo de contribución – como corregir errores en el código base o currículum – necesitan que ejecutes freeCodeCamp localmente en tu ordenador.
Apoyamos principalmente el desarrollo en sistemas basados en Linux y Unix. Nuestro personal y los colaboradores de la comunidad trabajan regularmente con el código base utilizando herramientas instaladas en Ubuntu y macOS.
Algunos miembros de la comunidad también desarrollan en Windows 10 nativamente con Git for Windows (Git Bash), y otras herramientas instaladas en Windows. No tenemos soporte oficial para dicha configuración en este momento, así que recomendamos usar WSL2 en su lugar.
> [!ATENCIÓN] Si tienes una versión diferente, por favor instale la versión recomendada. Sólo podemos soportar problemas de instalación para las versiones recomendadas. Ver [resolución de problemas](#troubleshooting) para más detalles.
> [!TIP] Recomendamos encarecidamente actualizar a las últimas versiones estables del software mencionado anteriormente, también conocidas como versiones de soporte a largo plazo (LTS).
Una vez tengas los prerrequisitos instalados, necesitas preparar tu entorno de desarrollo. Esto es normal en el desarrollo de flujos de trabajo, y sólo tendrás que hacerlo una vez.
1. Instala [Git](https://git-scm.com/) o tu cliente Git favorito, si aún no lo has hecho. Actualice a la última versión; la versión que viene empaquetada con su sistema operativo puede estar desactualizada.
Recomendamos altamente usar [Visual Studio Code](https://code.visualstudio.com/) o [Atom](https://atom.io/). Estos son grandes editores de código libre y gratuito.
Deberías tener [ESLint corriendo en tu editor](http://eslint.org/docs/user-guide/integrations.html), y resaltará cualquier cosa que no se ajuste a la [Guía de estilo JavaScript de freeCodeCamp](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121).
[Bifurcar](https://help.github.com/articles/about-forks/) es un paso donde consigues tu propia copia del repositorio de freeCodeCamp's (conocido como _repo_) en GitHub.
Esto es esencial, te permite trabajar en tu propia copia de FreeCodeCamp en GitHub, o descargar o clonar un repuesto para trabajar localmente. Más tarde, podrás solicitar cambios para que se muestren en el repositorio principal de tu "fork" (bifurcación) a través de una "pull request" (PR).
> Tu fork en `https://github.com/YOUR_USER_NAME/freeCodeCamp` suele referirse como el repositorio `origin`. `YOUR_USER_NAME` será remplazado con tu nombre de usuario de GitHub.
3. Después de que el repositorio haya sido bifurcado, serás llevado a tu copia del repositorio de freeCodeCamp en `https://github.com/YOUR_USER_NAME/freeCodeCamp` (`YOUR_USER_NAME` será remplazado con tu nombre de usuario de GitHub).
<imgsrc="https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/main/docs/images/github/how-to-fork-freeCodeCamp.gif"alt="Cómo bifurcar freeCodeCamp en Github"/>
"[Cloning](https://help.github.com/articles/cloning-a-repository/)" es donde tú "**download**" (descargas) una copia de un repositorio de una localización "`remote`" (remota) que es propiedad tuya o de alguien más. En tu caso, esta localización remota es tu "`fork`" bifurcación del repositorio de freeCodeCamp que debería estar disponible en `https://github.com/YOUR_USER_NAME/freeCodeCamp`. ("`YOUR_USER_NAME`" (Tu nombre de usuario) debería ser reemplazado con tu nombre de usuario de GitHub)
> [!WARNING] Si estás trabajando en una Distribución Linux WSL2, puedes presentar problemas de rendimiento y estabilidad por ejecutar este proyecto en una carpeta compartida entre Windows y WSL2 (p.ej. `/mnt/c/Users/`). Por lo tanto, recomendamos clonar este repositorio dentro de una carpeta que sea principalmente utilizada por su Distribución Linux WSL2 y no directamente compartida con Windows (p.ej. `~/PROJECTS/`).
[Como se mencionó anteriormente](#fork-the-repository-on-github), el repositorio principal es referido repositorio `upstream` . Su bifurcación conocida como repositorio de `origen`.
Necesita una referencia de su clon local al repositorio `upstream` además del repositorio `origin`. Esto es para que pueda sincronizar los cambios desde el repositorio principal sin el requisito de bifurcar y clonar repetidamente.
Si tiene problemas, primero realice una búsqueda web para su problema y compruebe si ya ha sido respondida. Si no encuentra una solución, por favor busque en nuestra página [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) para una solución e infórmese del problema si aún no ha sido reportado.
Y como siempre, siéntase libre de hacer preguntas en la categoría ['Contributors' en nuestro foro](https://forum.freecodecamp.org/c/contributors) o [nuestro servidor de chat](https://chat.freecodecamp.org/home).
> [!TIP] Puedes optar por no ejecutar freeCodeCamp localmente si simplemente estas editando archivos. Por ejemplo, realizar un `rebase`, or resolver conflictos `merge`.
> Siempre puedes regresar a esta parte de las instrucciones luego. Puedes obviar este paso **si y solo si** no necesitas ejecutar applicaciones en tu computadora.
Las claves de la API por defecto y las variables de entorno se almacenan en el archivo `sample.env`. El contenido de este archivo necesita ser copiado a un nuevo archivo llamado `.env` para que se acceda dinámicamente durante el paso de la instalación.
Las claves dentro del archivo `.env`_no_ requieren ser cambiadas para correr la aplicación de forma local. Puedes dejar los valores por defecto copiados desde `sample.env`.
> [!TIP] Ten en mente que si quieres usar APIs como Auth0 o Algolia, tienes que adquirir tus propias credenciales o API keys para usar esos servicios, de acuerdo a su archivo `.env`.
> [!NOTE] A menos que MongoDB haya sido configurado de forma diferente a la configuración por defecto, la URL `MONGOHQ_URL` en el archivo `.env` debería funcionar sin problemas. Si estás usando una configuración diferente a la por defecto, modifica ese valor según lo requiera.
> [!TIP] Puedes evitar tener que iniciar MongoDB cada vez que enciendes tu PC si instalas MongoDB como servicio de segundo plano. Puedes aprender más [consultando la documentación de tu sistema operativo](https://docs.mongodb.com/manual/administration/install-community/)
A continuación, vamos a "sembrar" la base de datos. En este paso, ejecutamos el siguiente comando que rellena el servidor MongoDB con algunos conjuntos de datos iniciales que son requeridos por los servicios. Estos incluyen algunos esquemas, entre otras cosas.
> [!NOTE] Una vez listo, abre tu navegador y ** visita <http://localhost:8000>**. Si la aplicación carga, ¡felicidades! Ahora posees una copia de la plataforma freeCodeCamp's en tu PC.
Su configuración local automáticamente rellena un usuario local en la base de datos. Al hacer clic en el botón `Sign In` se autenticará automáticamente en la aplicación local.
Sin embargo, acceder a la página del portafolio de usuarios es un poco complicado. En desarrollo, Gatsby se hace cargo de servir las páginas del lado del cliente y por lo tanto obtendrás una página `404` para el portafolio de usuarios cuando trabajes localmente.
<imgsrc="https://user-images.githubusercontent.com/29990697/71541249-f63cdf00-2923-11ea-8a85-cefb6f9c9977.gif"alt="Como iniciar sesión cuando se trabaja localmente"/>
> Debería asegurarse de que su pull request está fusionado por un moderador antes de realizar este paso. Para evitar este escenario, deberías **siempre** trabajar en una rama que no sea `main`.
Este paso **sincronizará los últimos cambios** desde el repositorio principal de freeCodeCamp. Es importante que rebase su rama sobre la última `upstream/main` tan a menudo como sea posible para evitar conflictos más tarde.
Trabajar en una rama separada para cada asunto le ayuda a mantener limpia su copia de trabajo local. Nunca deberías trabajar en `main`. Esto sumergirá su copia de freeCodeCamp y puede que tenga que empezar con un clon o un tenedor fresco.
Su nombre de rama debería comenzar con una `fix/`, `feat/`, `docs/`, etc. Evitar el uso de números de incidencias en las ramas. Manténgalos cortos, significativos y únicos.
En este paso, sólo debes marcar los archivos que has editado o añadido tú mismo. Puede realizar un restablecimiento y resolución de archivos que no tenía intención de cambiar si es necesario.
Recomendamos encarecidamente hacer un mensaje de compromiso convencional. Esta es una buena práctica que verás en algunos de los repositorios de Código Abierto. Como desarrollador, esto te anima a seguir las prácticas estándar.
Puedes aprender más sobre por qué debes usar commits convencionales [aquí](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
9. Si te das cuenta de que necesitas editar un archivo o actualizar el mensaje de confirmación después de hacer un commit puedes hacerlo después de editar los archivos con:
Regularmente desarrollamos en los últimos o más populares sistemas operativos como macOS 10.15 o posterior, Ubuntu 18.04 o posterior y Windows 10 (con WSL2).
Se recomienda buscar tu problema específico en recursos como Google, Stack Overflow y Stack Exchange. Existe la posibilidad de que alguien haya tenido al mismo problema y ya haya una respuesta a tu pregunta específica.
<imgsrc="https://user-images.githubusercontent.com/1884376/94270515-ca579400-ff5d-11ea-8ff1-152cade31654.gif"alt="Como limpiar archivos sin seguimientos de git"/>
Si no puedes iniciar sesión, y en su lugar ves un banner con un mensaje de error que será reportado a freeCodeCamp, por favor, comprueba que tu puerto local `3000` no esté en uso por un programa diferente.
Si obtiene errores durante la instalación de las dependencias, por favor asegúrese de que no está en una red restringida o sus ajustes de cortafuegos no le impiden acceder a los recursos.
La primera configuración puede tardar un rato dependiendo del ancho de banda de su red. Tenga paciencia, y si todavía está atascado le recomendamos usar GitPod en lugar de una configuración sin conexión.
> [!NOTE] Si está utilizando dispositivos Apple con chip M1 para ejecutar la aplicación localmente, se sugiere usar Node v14.7 o superior. De lo contrario, es posible que tenga problemas con dependencias como Sharp.
Si estas atascado y necesitas ayuda, siéntete libre de realizar preguntas en la [Categoria "Contribuyentes" en nuestro foro](https://forum.freecodecamp.org/c/contributors) o en la [Sala de Chat de los Contribuyentes](https://chat.freecodecamp.org/channel/contributors).
Puede haber un error en la consola de su navegador o en Bash / Terminal / Command Line que le ayudará a identificar el problema. Proporcione este mensaje de error en la descripción de su problema para que otros puedan identificar el problema más fácilmente y ayudarle a encontrar una solución.