Instalación del CLI de NestJS y primer proyecto con API
Resumen
NestJS es un framework muy popular que ofrece una interfaz de línea de comandos (CLI) robusta para facilitar el inicio y gestión de proyectos. En este resumen te comparto los pasos esenciales para instalar el CLI, crear tu primera API y configurar un entorno de desarrollo eficiente. Todo parte de la documentación oficial, asegurando que sigas buenas prácticas desde el primer momento.
¿Cómo se instala NestJS CLI correctamente desde la terminal?
Instalar el CLI de NestJS es sencillo, pero requiere tener Node.js instalado previamente. Solo necesitas ejecutar el comando oficial desde la terminal:
npm install -g @nestjs/cli
Esto instala la herramienta de forma global. Es recomendable visitar nestjs.com para consultar documentación, comandos y técnicas recomendadas. Verifica la instalación con:
nest --help
nest --version
Así confirmas versión y comandos disponibles.
¿Qué pasos seguir para crear un nuevo proyecto con NestJS CLI?
El CLI permite crear proyectos sin preparar previamente una carpeta. Solo usa el comando adecuado y elige un nombre para tu proyecto. Ejemplo:
nest newmy-block-api
Selecciona tu gestor de paquetes preferido (npm, Yarn); npm es una opción clásica. El CLI genera un boilerplate con buenas prácticas: archivos para pull request, un buen README, ESLint, TypeScript, y configuración lista para comenzar.
El proyecto queda en una carpeta nombrada como indicaste. Accede a ella con:
cd my-block-api
¿Cómo iniciar y explorar la aplicación recién creada?
Para arrancar la aplicación usa:
npm run start
Esto inicia el servicio por defecto en el puerto 3000. Al ir a localhost:3000 verás un mensaje "Hello World" que confirma que todo funciona. Si cierras el servidor, el puerto dejará de responder: recuerda siempre correr el comando de inicio cuando desarrollas.
¿Por qué es útil el live reloading durante el desarrollo?
Si cambias el texto en archivos como el service del proyecto y recargas el navegador, los cambios no aparecen automáticamente. Para que el servidor recargue los cambios en tiempo real, ejecuta:
npm run start:dev
Esto activa el live reloading, ideal para pruebas y ajustes rápidos mientras construyes tu API.
¿Qué archivos y carpetas iniciales componen un proyecto básico?
El archivo más relevante es package.json, donde están los scripts de build, formatting y start. Resaltan estos scripts:
build: prepara la app para producción.
format: estandariza el código del equipo.
start: arranca en producción.
start:dev: modo desarrollo con recarga automática.
test: configurado con Jest.
También encontrarás archivos de configuración:
De TypeScript (tsconfig).
Para formateo de código (prettier).
Reglas de buenas prácticas (.eslintrc).
La carpeta src contiene el punto de entrada principal (main.ts) y define el puerto por defecto, que puedes cambiar por variable de entorno o comando. Además, aparecen el servicio, los módulos y los controladores básicos que irás ajustando con el tiempo.
¿Qué extensiones se recomiendan para un equipo eficiente en VSCode o Cursor?
Para mejorar tu flujo de trabajo instala:
ESLint: asegura buenas prácticas de código.
EditorConfig: armoniza configuraciones aun si el equipo usa diferentes editores.
Crea también un archivo .editorconfig con una configuración estándar que evita diferencias molestas de formato entre compañeros. Estas extensiones y archivos son clave para proyectos robustos y colaborativos.
¿Cómo cambiar el puerto de la aplicación NestJS?
El archivo principal indica el puerto por defecto (3000). Tienes varias opciones para cambiarlo:
Modificar el archivo manualmente.
Usar una variable de entorno.
Ajustar el puerto vía línea de comandos.
Se invita a explorar estos métodos y probar arrancar la aplicación en un puerto distinto. Si tienes ideas o encuentras nuevas formas de mejorar la configuración, ¡comparte tu experiencia en los comentarios!
root =true[*]indent_style = space
indent_size =2charset = utf-8trim_trailing_whitespace =trueinsert_final_newline =trueend_of_line = lf
max_line_length = off
[CHANGELOG.md]indent_size =false
Thanks!
el indent_size es false, no unset, según el .editorconfig de Nicolas.
Quedaría:
[*]
indent_style = space
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf
# editorconfig-tools is unable to ignore Longs strings or urls max_line_length = off
[CHANGELOG.md] indent_size = false
Para configurar tu PORT en archivo .env
1. Instala dotenv:
npm i dotenv
```2. modifica tu main.ts
```js
import{NestFactory}from'@nestjs/core';import{AppModule}from'./app.module';import*as dotenvfrom'dotenv';--->>>>importar dotenv
dotenv.config();// ⬅️ Esta línea carga el .envasyncfunctionbootstrap(){const app =awaitNestFactory.create(AppModule);await app.listen(process.env.PORT??3000);}bootstrap();```3. crea un archivo .env en la raíz de tu proyecto y escribe:
```js
PORT=4000(OELPUETOQUEQUIERAS)```4. ¡IMPORTATE! no olvidar incluir .env en tu .gitignore para que estas variables de entorno no se suban al repositorio.
Muy interesante el uso de editorconfig. Es útil en el trabajo, en ocasiones he tenidio que revisar PR en los que tienen mucho diff noise, es decir, cambios que git detecta pero son simplemente un tipo de espaciado diferente o formato del código.
Usando editorconfig como estándar, se garantiza que los PR sean más limpios 👍
Tuve un problema con NestJS cuando intenté usar el hot reload desde mi terminal WSL, porque los proyectos ubicados en rutas como /mnt/c/... no generan correctamente los eventos de cambio de archivos que Nest necesita para recompilar. Aunque el servidor iniciaba normalmente, los cambios en el código no se reflejaban en el navegador. La solución fue ejecutar el proyecto desde Windows PowerShell, donde Node.js y NestJS sí pueden detectar cambios en tiempo real. Después de instalar correctamente Node 22 y el CLI de NestJS en Windows, el hot reload empezó a funcionar sin problemas. En resumen, el fallo no era de Nest, sino del sistema de archivos entre WSL y Windows. Ahora desarrollo con PowerShell y el hot reload funciona perfectamente.
probando ahora la recarga si me funciona bien pero en efecto no puedo ejecutar los comandos de nest desde mi terminal wsdl
what? pero eso ya se hizo en el primer video.
Hay 3 maneras fáciles de hacerlo.
1 crear un archivo .env y llamarlo.
2 reemplazarlo de manera manual en el archivo main.ts.
3 por ultimo levantando el puerto por cli con el comando PORT= #Puerto# npm start dev.
Hay más formas de hacerlo ?
Pueden Modificar el <u>package.json</u> en el script de desarrollo para escuchar las variables de entorno directamente: