Node.js ile paketten bağımsız betikler

NPM, Yarn ve PNPM'de çalışan betikler nasıl basitleştirilir?

package.json dosyanızda "npm my-script" veya "yarn my-script" gibi özel komut dosyalarınız varsa, bunlar yalnızca tanımladığınız paket yöneticisiyle çalışır. Ancak NPM, geçerli yürütülebilir dosyayı her seferinde açıkça belirtmeden çağırmak için bir API sunar.

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

$npm_execpath kullanma

"npm" veya "yarn" (veya "pnpm" gibi başka bir paket yöneticisi) yerine "$npm_execpath" dizesini kullanarak, bu komut dosyası, mevcut geliştiricinin orijinal komut dosyasını nasıl adlandırdığı önemli değil, her paket yöneticisiyle çalışacaktır. .

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

Tüm makinelerde uyumlu mu?

Ne yazık ki, komut dosyalarının herhangi bir paket yöneticisiyle çalışmasını sağlamak için “$npm_execpth” kullanmak, Windows'un kurulu olduğu makinelerde güvenilir şekilde çalışmaz.

package.json'da komut dosyalarını çağırmanın en güvenilir yolu nedir?

Bu nedenle, package.json dosyasındaki özel betiklerinizi çağırmanın en güvenilir yolu, yürütülebilir paket yöneticisini açıkça tanımlamak ve ekibinizin yalnızca onu kullandığından emin olmaktır.

Bu komut dosyalarını güvenilir bir şekilde yürütmek için "$npm_execpath" kullanabileceğiniz Windows çalıştırmayan cihazlarda daha iyidir.