Estoy desarrollando un paquete para iniciar sesión en Node.js. Quiero poder leer la ruta del proyecto donde se usa mi paquete. Eso es porque quiero que el usuario pueda poner un archivo de configuración en la raíz de su proyecto. Quiero lograr algo similar a que el paquete ESLint pueda leer el archivo .eslintrc .
Quiero poder leer la ruta del proyecto donde se usa mi paquete
process.argv[1] será la ruta completa del script raíz que se ejecutó (quizás sin extensión de archivo).
Entonces, puede tomar esa ruta completamente calificada y luego obtener solo el directorio como este:
const rootdir = path.dirname(process.argv[1]);Como usted preguntó, este es el directorio donde se encuentra el script raíz que inició todo el programa nodejs. Ese puede o no ser el lugar desde donde se cargó su módulo en particular. Su módulo podría cargarse desde algún otro módulo que se haya cargado desde el script raíz.
Además, este no es necesariamente el mismo directorio que el directorio de trabajo actual, process.cwd() . Si se pasa una ruta al script raíz, entonces el directorio de trabajo actual puede ser literalmente cualquier cosa, por lo que no se puede contar con que apunte a ningún módulo específico.
Tenga en cuenta que una buena modularidad NO tendrá dependencias en módulos principales específicos o módulos principales específicos ubicados en ciertos lugares. Si su módulo necesita saber dónde se encuentran algunos recursos, debería poder encontrarlos de una de varias maneras:
__dirname o import.meta ).Por lo general, no debe escribir un módulo que deba tener ciertos módulos principales en ubicaciones conocidas. De alguna manera, por definición, ese no es un módulo reutilizable y fácil de compartir si solo puede ser utilizado por otro módulo específico que tenga una estructura específica.