Paketunabhängige Skripte mit Node.js

So vereinfachen Sie das Ausführen von Skripten in NPM, Yarn und PNPM

Wenn Sie benutzerdefinierte Skripte in Ihrer package.json-Datei haben, wie „npm my-script“ oder „yarn my-script“, funktionieren diese nur mit dem von Ihnen definierten Paketmanager. Aber NPM bietet eine API, um die aktuelle ausführbare Datei jedes Mal aufzurufen, ohne sie explizit anzugeben.

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

Verwenden von $npm_execpath

Durch die Verwendung der Zeichenfolge „$npm_execpath“ anstelle von „npm“ oder „yarn“ (oder einem anderen Paketmanager wie „pnpm“) funktioniert dieses Skript mit jedem Paketmanager, unabhängig davon, wie der aktuelle Entwickler das ursprüngliche Skript aufgerufen hat .

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

Ist es auf allen Maschinen kompatibel?

Leider funktioniert die Verwendung von „$npm_execpth“, damit Skripte mit jedem Paketmanager funktionieren, nicht zuverlässig auf Computern, auf denen Windows installiert ist.

Was ist die zuverlässigste Methode zum Aufrufen von Skripts in package.json?

Daher besteht die zuverlässigste Methode zum Aufrufen Ihrer benutzerdefinierten Skripts in der Datei „package.json“ immer noch darin, die ausführbare Datei des Paketmanagers explizit zu definieren und sicherzustellen, dass Ihr Team nur diese verwendet.

Es ist besser auf Geräten, auf denen kein Windows ausgeführt wird, wo Sie „$npm_execpath“ verwenden können, um diese Skripte zuverlässig auszuführen.