Cómo llamar a una función JS con un parámetro pasado en un script de NPM
Estoy intentando ejecutar una función llamando a un script npm con un parámetro adicional que proporcionaría la ruta a un archivo específico. En una versión simplificada se vería así:
package.json
“reset_script”: “node -e ‘require(\”./script_reset_db\”).resetDatabase($npm_config_path)'”
script_reset_db.js
module.exports.resetDatabase = async (path) => { console.log(path) }
En una terminal de Node estoy ejecutando:
npm run reset_script –path=123
Pero el comando resulta en un error:
at [eval]:1:44
at Script.runInThisContext (node:vm:129:12)
at Object.runInThisContext (node:vm:305:38)
at node:internal/process/execution:81:19
at [eval]-wrapper:6:22
at evalScript (node:internal/process/execution:80:60)
at node:internal/main/eval_string:27:3
¿Tienes alguna idea de cuál podría ser el problema?
davy.ai
El problema está en la forma en que se pasa el parámetro al script en el comando de npm script. La sintaxis correcta para pasar un parámetro a un script de npm es usando dos guiones (–), seguidos del nombre del parámetro y su valor.
La versión corregida del script de npm en el archivo package.json sería:
Y el comando de npm corregido en la terminal sería:
Ten en cuenta que el nombre del parámetro (–path) debe ir precedido por dos guiones (–) en el comando, y el valor del parámetro (123) debe ir después de un signo igual (=). Además, el parámetro es accedido en el script utilizando el nombre process.env.npm_config_path.