Csomag-aggnosztikus szkriptek Node.js-szel

A szkriptek egyszerűsítése az NPM-ben, a Yarn-ben és a PNPM-ben

Ha egyéni szkriptek vannak a package.json-fájlban, például „npm my-script” vagy „yarn my-script”, ezek csak az Ön által meghatározott csomagkezelővel működnek. Az NPM azonban egy API-t kínál, amely minden alkalommal meghívja az aktuális végrehajtható fájlt anélkül, hogy kifejezetten megadná.

{
  "scripts": {
    "cleanup": "./clean-up.js",
    "copy": "./copy.js",
    "prepare": "npm run cleanup && npm run copy"
  }
}

$npm_execpath használatával

Ha az „npm” vagy „yarn” helyett a „$npm_execpath” karakterláncot használja (vagy más csomagkezelő, például „pnpm”), ez a szkript minden csomagkezelővel működik, függetlenül attól, hogy az aktuális fejlesztő mit használt az eredeti szkript meghívására. .

{
  "scripts": {
    "cleanup": "./clean-up.js",
    "copy": "./copy.js",
    "prepare": "$npm_execpath run cleanup && $npm_execpath run copy"
  }
}

Minden géppel kompatibilis?

Sajnálatos módon a „$npm_execpth” használatával a szkriptek bármilyen csomagkezelővel működjenek, nem működik megbízhatóan azokon a gépeken, amelyekre telepítve van a Windows.

Mi a legmegbízhatóbb módja a szkriptek meghívásának a package.json fájlban?

Ezért a legmegbízhatóbb módja az egyéni parancsfájlok a package.json-fájlban történő meghívásának továbbra is az, ha kifejezetten meghatározza a csomagkezelő végrehajtható fájlját, és biztosítja, hogy csapata csak azt használja.

Jobb azokon az eszközökön, amelyeken nem fut a Windows, ahol a „$npm_execpath” használatával megbízhatóan futtathatja ezeket a szkripteket.