Pakket-agnostiese skrifte met Node.js

Hoe om lopende skrifte in NPM, Yarn en PNPM te vereenvoudig

As jy gepasmaakte skrifte in jou package.json-lêer het, soos "npm my-script" of "yarn my-script", sal hulle net werk met die pakketbestuurder wat jy definieer. Maar NPM bied 'n API om die huidige uitvoerbare elke keer te noem, sonder om dit uitdruklik te spesifiseer.

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

Gebruik $npm_execpath

Deur die string "$npm_execpath" te gebruik in plaas van "npm" of "yarn" (of 'n ander pakketbestuurder soos "pnpm"), sal hierdie skrif met elke pakketbestuurder werk, maak nie saak wat die huidige ontwikkelaar gebruik het om die oorspronklike script te noem nie. .

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

Is dit versoenbaar op alle masjiene?

Ongelukkig werk die gebruik van "$npm_execpth" om skrifte met enige pakketbestuurder te laat werk, nie betroubaar op masjiene wat Windows geïnstalleer het nie.

Wat is die mees betroubare manier om skrifte in package.json te noem?

Daarom is die mees betroubare manier om jou gepasmaakte skrifte in die package.json-lêer te noem, steeds om die uitvoerbare pakketbestuurder eksplisiet te definieer en te verseker dat jou span net daardie een gebruik.

Dit is beter op toestelle wat nie Windows gebruik nie, waar jy “$npm_execpath” kan gebruik om daardie skrifte betroubaar uit te voer.