אם יש לך סקריפטים מותאמים אישית בקובץ 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-file היא עדיין להגדיר במפורש את קובץ ההפעלה של החבילה מנהלת ולהבטיח שהצוות שלך ישתמש רק בזה.
זה עדיף במכשירים שאינם מריצים Windows, שבהם אתה יכול להשתמש ב-"$npm_execpath" כדי לבצע באופן אמין את הסקריפטים האלה.