Si tiene scripts personalizados en su archivo package.json, como "npm my-script" o "yarn my-script", solo funcionarán con el administrador de paquetes que defina. Pero NPM ofrece una API para llamar al ejecutable actual cada vez, sin especificarlo explícitamente.
{
"scripts": {
"cleanup": "./clean-up.js",
"copy": "./copy.js",
"prepare": "npm run cleanup && npm run copy"
}
}
Usando $npm_execpath
Al usar la cadena "$npm_execpath" en lugar de "npm" o "yarn" (u otro administrador de paquetes como "pnpm"), este script funcionará con todos los administradores de paquetes, sin importar cómo haya usado el desarrollador actual para llamar al script original. .
{
"scripts": {
"cleanup": "./clean-up.js",
"copy": "./copy.js",
"prepare": "$npm_execpath run cleanup && $npm_execpath run copy"
}
}
¿Es compatible en todas las máquinas?
Lamentablemente, usar "$npm_execpth" para hacer que los scripts funcionen con cualquier administrador de paquetes no funciona de manera confiable en máquinas que tienen instalado Windows.
¿Cuál es la forma más confiable de llamar a los scripts en package.json?
Por lo tanto, la forma más confiable de llamar a sus scripts personalizados en el archivo package.json sigue siendo definir explícitamente el ejecutable del administrador de paquetes y asegurarse de que su equipo solo use ese.
Es mejor en dispositivos que no ejecutan Windows, donde puede usar "$npm_execpath" para ejecutar esos scripts de manera confiable.