Supongamos que tengo un node_module instalado llamado magicalModule y lo instalé a través npm i magicalModule .
Lo importo a mi código a través de const magic = require('magicalModule') .
¿Hay alguna manera de sobrescribir esa ruta específica para poder usar mi propio módulo en su lugar?
Por ejemplo, tengo una versión modificada de ese módulo que quiero usar en lugar del paquete instalado. Tal vez coloque algo en package.json o algo como:
dependencies:{ Alias:{ 'magicalModule': process.env.local ? './myPath' : 'magicalModule' } }Algo como arriba...
Sé que hay un módulo llamado Module-alias pero no estoy seguro de si se ajusta a mi caso de uso.
En cuanto a por qué tendría que hacer algo como esto es porque hay un paquete NPM que se usa mucho en varios archivos y quiero reemplazarlo con otro paquete NPM que estoy desarrollando actualmente. ¿Quieres probarlo localmente antes de publicar ese paquete NPM...
Si necesita una importación dinámica, coloque require en una condición if
let myModule = require(process.env.local ? './myPath' : 'myModule'); // make sure there is index.js insideNo puede hacerlo en package.json ya que ese archivo es estático. Sin embargo, si de alguna manera puede editar el paquete json, entonces se pueden agregar dependencias locales como
"dependencies": { "bar": "file:./myPath" // package.json is read inside of ./myPath }Sí, después de algunos retoques, la solución fue usar module-alias después de todo. En mi archivo principal, agregué en la parte superior antes de cualquier código:
if(process.env.useLocal) require('module-alias/register')Luego, en mi archivo package.json agregué:
"_moduleAliases": { "magicalModule" : "path_to_file" }después de mi sección de dependencias, sobrescribe la ruta a node_modules y mi proyecto usará mi módulo local en su lugar.
Espero que esto ayude a cualquier otra persona que necesite hacer algo similar a mí.
Salud