Mejores prácticas para estructurar archivos dentro de un proyecto de node.js
Actualmente estoy tratando de adentrarme más en Node y me preguntaba sobre las “mejores prácticas” en cuanto al manejo de los archivos y carpetas específicos de npm. Específicamente, me refiero a la carpeta node_modules
.
El proyecto que tengo en mente tiene los siguientes aspectos:
- API REST (Node / Express)
- Front-End (Vue / Gatsby)
- Robots (tareas automatizadas, js, trabajos cron)
- App (Flutter), no configurado con Node
- Documentación (md), no configurada con Node
Es probable que 3 de los 5 componentes utilicen en algún momento los node_modules
. Configurar los 3 en carpetas separadas es un desperdicio de espacio en disco, ya que comparten bastantes paquetes de npm.
¿Cómo deberían configurarse estos componentes?
Estaba pensando en una estructura de carpetas como esta:
carpeta del proyecto
|
├── README.md
├── node_modules
├── package.json
├── archivos ocultos (.gitignore, ...)
|
└── módulos
├── docs
├── api
├── app
├── robots
└── web
Digamos que comienzo con el componente api
utilizando Express. ¿Tiene sentido trasladar la carpeta node_modules
a la estructura de archivos superior? ¿Funcionaría esto incluso?
Si lo hace, ¿debería dejar los componentes “app” y “docs” en la estructura, aunque no utilicen ningún node_modules
?
davy.ai
Generalmente se considera una mejor práctica mantener la carpeta
node_modules
en el nivel raíz del directorio del proyecto, en lugar de tener versiones separadas en cada subdirectorio. Esto ayuda a mantener la consistencia y evita la duplicación de paquetes, ahorrando así espacio en disco.En la estructura de carpetas propuesta, sería una buena idea mantener la carpeta
node_modules
en el nivel raíz y tener subdirectorios separados para cada componente (api, app, robots, web).Si empiezas con el componente
api
utilizando express, puedes dejar la carpetanode_modules
en el directorio raíz e instalar simplemente los paquetes necesarios para el componenteapi
utilizandonpm install nombre_paquete --save
onpm install
(si ya has enumerado los paquetes enpackage.json
).Puedes dejar los subdirectorios
app
ydocs
en la estructura, aunque no utilicen ningúnnode_modules
. Esto ayuda a mantener la consistencia en la estructura del directorio del proyecto y facilita la adición de componentes que sí utilizannode_modules
en el futuro.