Πακέτα-αγνωστικά σενάρια με το Node.js

Πώς να απλοποιήσετε την εκτέλεση σεναρίων σε NPM, Yarn και PNPM

Εάν έχετε προσαρμοσμένα σενάρια στο αρχείο package.json, όπως "npm my-script" ή "yarn my-script", θα λειτουργούν μόνο με τον διαχειριστή πακέτων που ορίζετε. Αλλά το NPM προσφέρει ένα API για να καλεί το τρέχον εκτελέσιμο αρχείο κάθε φορά, χωρίς να το προσδιορίζει ρητά.

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

Χρησιμοποιώντας $npm_execpath

Χρησιμοποιώντας τη συμβολοσειρά "$npm_execpath" αντί για "npm" ή "yarn" (ή άλλη διαχείριση πακέτων όπως "pnpm"), αυτό το σενάριο θα λειτουργεί με κάθε διαχειριστή πακέτων, ανεξάρτητα από το τι έχει χρησιμοποιήσει ο τρέχων προγραμματιστής για να καλέσει το αρχικό σενάριο .

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

Είναι συμβατό με όλα τα μηχανήματα;

Δυστυχώς, η χρήση του "$npm_execpth" για να λειτουργούν τα σενάρια με οποιονδήποτε διαχειριστή πακέτων δεν λειτουργεί αξιόπιστα σε μηχανήματα που έχουν εγκατεστημένα τα Windows.

Ποιος είναι ο πιο αξιόπιστος τρόπος κλήσης σεναρίων στο package.json;

Επομένως, ο πιο αξιόπιστος τρόπος για να καλέσετε τα προσαρμοσμένα σενάρια στο αρχείο package.json εξακολουθεί να είναι να ορίσετε ρητά το εκτελέσιμο αρχείο διαχείρισης πακέτων και να διασφαλίσετε ότι η ομάδα σας χρησιμοποιεί μόνο αυτό.

Είναι καλύτερα σε συσκευές που δεν εκτελούν Windows, όπου μπορείτε να χρησιμοποιήσετε το "$npm_execpath" για να εκτελέσετε αξιόπιστα αυτά τα σενάρια.