Εάν έχετε προσαρμοσμένα σενάρια στο αρχείο 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" για να εκτελέσετε αξιόπιστα αυτά τα σενάρια.