Este único archivo arregló mi entorno de desarrollo (Devbox)
BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology
Transcript
00:00:00tu léame te está mintiendo, dice que la configuración toma cinco minutos, luego falla node, falla python
00:00:07falta postgres, docker tarda una eternidad y ahora estamos depurando antes siquiera de empezar
00:00:13tu entorno de desarrollo no debería vivir en un léame, debería vivir en git, eso es lo que hace devbox
00:00:20un archivo devbox json, un comando devbox shell, el mismo entorno para cada desarrollador sin instalaciones globales
00:00:28y sin necesidad de conocer nix, déjame mostrarte
00:00:30al principio devbox parece casi demasiado simple, creas un devbox json, listas las herramientas que necesita tu proyecto
00:00:42node, go, python, postgres, lo que sea que tu stack realmente necesite, confirmas ese archivo y cualquier otro puede simplemente
00:00:50ejecutar devbox shell y obtienen el mismo entorno que tú, las mismas versiones, herramientas, scripts, nada de instalaciones
00:00:58globales, nada de por favor instala estas ocho cosas primero, nada de estado de homebrew de hace años, tu configuración
00:01:03deja de vivir en la memoria de alguien, empieza a vivir en tu repositorio, ahora eso suena pequeño, pero si alguna vez
00:01:09has perdido medio día por una configuración local rota, ya sabes que esto no es pequeño, si disfrutas
00:01:16de herramientas de codificación para acelerar tu flujo de trabajo, asegúrate de suscribirte, tenemos videos saliendo todo el tiempo
00:01:20ahora vamos a empezar aquí, así que voy a comenzar con un proyecto vacío, voy a crear una nueva carpeta
00:01:25la llamaremos devbox demo, accedemos a la carpeta y todo lo que necesitamos hacer una vez que tenemos devbox es ejecutar
00:01:31devbox init, devbox crea un archivo llamado devbox json, ahora mismo está básicamente vacío, es solo el
00:01:39boilerplate que nos da devbox, ahora añadamos las herramientas que este proyecto realmente necesita, para añadir herramientas podemos
00:01:45crear un devbox add y voy a instalar cosas como go, node.js y algo de python, ahora aquí está la
00:01:52parte importante, no estoy instalando esto globalmente, no estoy cambiando mi node del sistema, no estoy tocando mi sistema
00:02:00con python, estas herramientas pertenecen a este proyecto, ahora cuando ejecuto devbox shell y estoy dentro de un proyecto limpio
00:02:09entorno, ahora que estás en este entorno, podrías simplemente verificar las versiones, verdad, go version, node
00:02:14version, python version, verdad, puedo verificar todo para asegurarme de que esté funcionando, esa es la gran recompensa
00:02:19el proyecto pidió herramientas específicas, devbox me dio esas herramientas, ahora añadamos un script y dentro de devbox
00:02:27json podemos definir una prueba y simplemente voy a hacer eco de estas pruebas en ejecución y obtendré el nodo
00:02:34en la versión de go, cuando ejecutas devbox run test y ahora ese mismo comando funciona para cualquiera que use este repositorio
00:02:42mismo script, mismas herramientas, mismo entorno, ahora mira lo que pasa cuando salgo, puedes simplemente ejecutar exit
00:02:48vas a salir de ese entorno y estoy de vuelta en mi entorno de máquina normal, así que fue simple, verdad, qué está haciendo realmente devbox
00:02:53bueno, devbox usa nix bajo todo, nix es genial porque
00:03:00está construido para la reproducibilidad, en lugar de decir instala lo que sea que resulte ser lo último hoy
00:03:06puede fijar las herramientas exactas que tu proyecto realmente necesita, ahora esa es la buena parte, la parte difícil es
00:03:12que nix puede sentirse como un mundo completamente nuevo, hay muchos conceptos que son geniales, pero no exactamente
00:03:18amigables cuando todo lo que querías era la versión correcta de node, devbox nos muestra algo diferente
00:03:23aquí dice qué pasaría si mantuviéramos la reproducibilidad pero hiciéramos que el flujo de trabajo se sintiera normal, así que en lugar de
00:03:29escribir expresiones de nix puedes usar comandos como devbox add, devbox search, shell, run, services, todos
00:03:37estos comandos son mucho más simples y tu proyecto obtiene dos archivos importantes, obtienes un archivo json y un
00:03:44archivo lock, piensa en el devbox json como lo que necesita nuestro entorno, piensa en el archivo devbox lock como el pin para fijar
00:03:52exactamente lo que obtuviste, confirmas ambos, ahora tu entorno no es solo un párrafo en un archivo léame
00:03:58es parte del proyecto real, devbox funciona en mac os, linux y wsl, puede integrarse con vs code, puede
00:04:06definir scripts, puede administrar servicios como bases de datos y cuando lo necesitas, puede exportar a cosas como
00:04:12docker, dev containers y flujos de trabajo de ci, el valor de esto no es solo una herramienta genial, verdad, es una herramienta simple, el
00:04:19valor es creo que solo tiempo, el primer problema es el léame, ¿verdad?, el léame podría decir realmente cualquier cosa, podría
00:04:26decir hey instala node 18 pero la aplicación ha cambiado, realmente necesita node 20, el segundo problema
00:04:32con el que esto realmente ayuda es la incorporación, es tu primer día en el trabajo, debería ser fácil ponerse en marcha
00:04:37sabemos que ese no es el caso, ¿verdad?, así que no deberías necesitar preguntar qué versión de node necesito, no deberías
00:04:43necesitar preguntar a alguien hey qué versión de python estamos usando, realmente necesito postgres localmente y por qué esto
00:04:48solo funciona para el pequeño timmy allí, simplemente deberían tener que clonar el repositorio, entrar en la terminal
00:04:52y ejecutar el proyecto, si algo falla al menos todos están empezando desde el mismo entorno, el problema
00:04:58es la contaminación global, probar herramientas no debería destruir tu portátil, quieres go 1.22 para este repo, lo añades, tú
00:05:06quieres node 20 aquí pero algo más en otro lugar, bien, está bien, las herramientas viven con el proyecto, tu
00:05:13sistema se mantiene más limpio con devbox, tu definición de entorno puede compartirse entre desarrollo local
00:05:18y automatización, ¿soluciona eso todos los problemas de ci?, no, no lo hará, pero elimina una gran clase de problemas tontos
00:05:26y los problemas tontos son los que más nos duelen, son simples, aún los tenemos todo el
00:05:32tiempo, finalmente aquí está docker, flujo de trabajo local pesado de docker, más específicamente, docker sigue siendo genial, con diferencia, si
00:05:40necesitas contenedores, usa contenedores, pero muchos equipos usan docker localmente porque no tienen una mejor
00:05:46manera de gestionar herramientas, ahora lo bueno aquí es que el flujo de trabajo es simple, devbox add, shell, run, tú
00:05:52no tienes que aprender tanto, el entorno se convierte en una parte real de tu proyecto, un archivo real
00:05:57en el repositorio cuando todos usan las mismas versiones y scripts, la depuración se vuelve más fácil, pero eso es genial
00:06:03super simple, lo que te va a molestar es bueno, la primera descarga tomó un tiempo
00:06:09está bien, es la primera vez, okay, json es simple pero puede volverse feo como sabemos si añadimos demasiado
00:06:15en él, para scripts básicos está bien, para lógica de configuración compleja no metas un comando de shell gigante en json
00:06:22simplemente pon la lógica en un archivo sh, luego llama a eso desde devbox y finalmente devbox no es un ide en la nube completo
00:06:30si necesitas codificación basada en navegador, urls de vista previa instantánea, es posible que aún quieras algo como code spaces
00:06:36devbox es mejor en la reproducibilidad local y de ci, devbox no va a resolver cada problema de desarrollo
00:06:42pero puede resolver los que más nos molestan, que es realmente solo conseguir que el proyecto
00:06:46ejecute, así que podría valer la pena intentarlo, especialmente si tu proyecto tiene más de un lenguaje o más de
00:06:51una herramienta cli, si disfrutas de herramientas de codificación como esta, asegúrate de suscribirte al canal better stack, nos
00:06:56veremos en otro video.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video