Skip to content

يدعم Bun "overrides" الخاص بـ npm و "resolutions" الخاص بـ Yarn في package.json. هذه آليات لتحديد نطاق إصدار لـ التبعيات الفرعية - تبعيات تبعياتك.

json
{
  "name": "my-app",
  "dependencies": {
    "foo": "^2.0.0"
  },
  "overrides": { 
    "bar": "~4.4.0"
  } 
}

افتراضيًا، سيقوم Bun بتثبيت أحدث إصدار من جميع التبعيات والتبعيات الفرعية، وفقًا لنطاقات الإصدارات المحددة في package.json الخاص بكل حزمة. لنفترض أن لديك مشروعًا به تبعية واحدة، foo، والتي بدورها تعتمد على bar. هذا يعني أن bar هي تبعية فرعية لمشروعنا.

json
{
  "name": "my-app",
  "dependencies": {
    "foo": "^2.0.0"
  }
}

عند تشغيل bun install، سيقوم Bun بتثبيت أحدث إصدارات من كل حزمة.

txt
node_modules
├── foo@1.2.3
└── bar@4.5.6

ولكن ماذا لو تم إدخال ثغرة أمنية في bar@4.5.6؟ قد نرغب في طريقة لتثبيت bar على إصدار أقدم لا يحتوي على الثغرة الأمنية. هنا يأتي دور "overrides"/"resolutions".


"overrides"

أضف bar إلى حقل "overrides" في package.json. سيؤجل Bun إلى نطاق الإصدار المحدد عند تحديد الإصدار المراد تثبيته من bar، سواء كانت تبعية أو تبعية فرعية.

NOTE

يدعم Bun حاليًا فقط `"overrides"` على المستوى الأعلى. [التجاوزات المتداخلة](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides) غير مدعومة.
json
{
  "name": "my-app",
  "dependencies": {
    "foo": "^2.0.0"
  },
  "overrides": { 
    "bar": "~4.4.0"
  } 
}

"resolutions"

النمط مشابه لـ "resolutions"، وهو بديل Yarn لـ "overrides". يدعم Bun هذه الميزة لتسهيل الهجرة من Yarn.

كما هو الحال مع "overrides"، الحلول المتداخلة غير مدعومة حاليًا.

json
{
  "name": "my-app",
  "dependencies": {
    "foo": "^2.0.0"
  },
  "resolutions": { 
    "bar": "~4.4.0"
  } 
}

Bun بواسطة www.bunjs.com.cn تحرير