Skip to content

يقرأ Bun ملفات .env الخاصة بك تلقائيًا ويوفر طرقًا اصطلاحية لقراءة وكتابة متغيرات البيئة الخاصة بك برمجيًا. بالإضافة إلى ذلك، يمكن تكوين بعض جوانب سلوك وقت تشغيل Bun باستخدام متغيرات بيئة خاصة بـ Bun.

تعيين متغيرات البيئة

يقرأ Bun الملفات التالية تلقائيًا (مدرجة بترتيب تصاعدي للأسبقية).

  • .env
  • .env.production، .env.development، .env.test (اعتمادًا على قيمة NODE_ENV)
  • .env.local
ini
FOO=hello
BAR=world

يمكن أيضًا تعيين المتغيرات عبر سطر الأوامر.

sh
FOO=helloworld bun run dev
sh
# استخدام CMD
set FOO=helloworld && bun run dev

# استخدام PowerShell
$env:FOO="helloworld"; bun run dev

حل متعدد المنصات مع Windows">

للحصول على حل متعدد المنصات، يمكنك استخدام bun shell. على سبيل المثال، أمر bun exec.

sh
bun exec 'FOO=helloworld bun run dev'

على Windows، ستستخدم نصوص package.json التي يتم استدعاؤها باستخدام bun run تلقائيًا bun shell، مما يجعل ما يلي أيضًا متعدد المنصات.

json
"scripts": {
  "dev": "NODE_ENV=development bun --watch app.ts",
},

أو برمجيًا عن طريق تعيين خاصية لـ process.env.

ts
process.env.FOO = "hello";

تحديد ملفات .env يدويًا

يدعم Bun --env-file لتجاوز ملف .env المحدد الذي سيتم تحميله. يمكنك استخدام --env-file عند تشغيل النصوص البرمجية في وقت تشغيل bun، أو عند تشغيل نصوص package.json.

sh
bun --env-file=.env.1 src/index.ts

bun --env-file=.env.abc --env-file=.env.def run build

تعطيل تحميل .env التلقائي

استخدم --no-env-file لتعطيل تحميل Bun التلقائي لملفات .env. هذا مفيد في بيئات الإنتاج أو خطوط أنابيب CI/CD حيث تريد الاعتماد فقط على متغيرات بيئة النظام.

sh
bun run --no-env-file index.ts

يمكن تكوين هذا أيضًا في bunfig.toml:

toml
# تعطيل تحميل ملفات .env
env = false

سيتم تحميل ملفات البيئة المقدمة صراحةً عبر --env-file حتى عند تعطيل التحميل الافتراضي.


علامات الاقتباس

يدعم Bun علامات الاقتباس المزدوجة، والمفردة، والبادئات الخلفية للحرف النصي:

ini
FOO='hello'
FOO="hello"
FOO=`hello`

التوسيع

يتم توسيع متغيرات البيئة تلقائيًا. هذا يعني أنه يمكنك الرجوع إلى المتغيرات المحددة مسبقًا في متغيرات البيئة الخاصة بك.

ini
FOO=world
BAR=hello$FOO
ts
process.env.BAR; // => "helloworld"

هذا مفيد لإنشاء سلاسل الاتصال أو القيم المركبة الأخرى.

ini
DB_USER=postgres
DB_PASSWORD=secret
DB_HOST=localhost
DB_PORT=5432
DB_URL=postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME

يمكن تعطيل هذا عن طريق الهروب من $ باستخدام خط مائل عكسي.

ini
FOO=world
BAR=hello\$FOO
ts
process.env.BAR; // => "hello$FOO"

dotenv

بشكل عام، لن تحتاج إلى dotenv أو dotenv-expand بعد الآن، لأن Bun يقرأ ملفات .env تلقائيًا.

قراءة متغيرات البيئة

يمكن الوصول إلى متغيرات البيئة الحالية عبر process.env.

ts
process.env.API_TOKEN; // => "secret"

يعرض Bun أيضًا هذه المتغيرات عبر Bun.env و import.meta.env، وهو اسم مستعار بسيط لـ process.env.

ts
Bun.env.API_TOKEN; // => "secret"
import.meta.env.API_TOKEN; // => "secret"

لطباعة جميع متغيرات البيئة المحددة حاليًا إلى سطر الأوامر، قم بتشغيل bun --print process.env. هذا مفيد للتنقيح.

sh
bun --print process.env
BAZ=stuff
FOOBAR=aaaaaa
<lots more lines>

TypeScript

في TypeScript، جميع خصائص process.env مكتوبة كـ string | undefined.

ts
Bun.env.whatever;
// string | undefined

للحصول على الإكمال التلقائي وإخبار TypeScript بمعاملة متغير كسلسلة غير اختيارية، سنستخدم دمج الواجهات.

ts
declare module "bun" {
  interface Env {
    AWESOME: string;
  }
}

أضف هذا السطر إلى أي ملف في مشروعك. سيضيف عالميًا الخاصية AWESOME إلى process.env و Bun.env.

ts
process.env.AWESOME; // => string

تكوين Bun

تقرأ Bun متغيرات البيئة هذه وتكوين جوانب من سلوكها.

الاسمالوصف
NODE_TLS_REJECT_UNAUTHORIZEDNODE_TLS_REJECT_UNAUTHORIZED=0 يعطل التحقق من صحة شهادة SSL. هذا مفيد للاختبار والتنقيح، لكن يجب أن تتردد جدًا في استخدام هذا في الإنتاج. ملاحظة: تم تقديم متغير البيئة هذا في الأصل بواسطة Node.js واحتفظنا بالاسم للتوافق.
BUN_CONFIG_VERBOSE_FETCHإذا كان BUN_CONFIG_VERBOSE_FETCH=curl، فستسجل طلبات fetch عنوان URL والطريقة ورؤوس الطلب ورؤوس الاستجابة إلى وحدة التحكم. هذا مفيد لتنقيح طلبات الشبكة. يعمل هذا أيضًا مع node:http. BUN_CONFIG_VERBOSE_FETCH=1 يعادل BUN_CONFIG_VERBOSE_FETCH=curl باستثناء عدم وجود مخرجات curl.
BUN_RUNTIME_TRANSPILER_CACHE_PATHيقوم مترجم وقت التشغيل بتخزين مؤقت لمخرجات الملفات المصدرية الأكبر من 50 كيلوبايت. هذا يجعل واجهات سطر الأوامر التي تستخدم Bun يتم تحميلها بشكل أسرع. إذا تم تعيين BUN_RUNTIME_TRANSPILER_CACHE_PATH، فسيقوم مترجم وقت التشغيل بتخزين المخرجات المترجمة إلى الدليل المحدد. إذا تم تعيين BUN_RUNTIME_TRANSPILER_CACHE_PATH إلى سلسلة فارغة أو السلسلة "0"، فلن يقوم مترجم وقت التشغيل بتخزين المخرجات المترجمة. إذا لم يتم تعيين BUN_RUNTIME_TRANSPILER_CACHE_PATH، فسيقوم مترجم وقت التشغيل بتخزين المخرجات المترجمة إلى دليل التخزين المؤقت الخاص بالمنصة.
TMPDIRيتطلب Bun من حين لآخر دليلاً لتخزين الأصول الوسيطة أثناء التجميع أو العمليات الأخرى. إذا لم يتم تعيينه، فسيتم استخدام دليل المؤقت الخاص بالمنصة افتراضيًا: /tmp على Linux، /private/tmp على macOS.
NO_COLORإذا كان NO_COLOR=1، فسيتم تعطيل مخرجات ألوان ANSI.
FORCE_COLORإذا كان FORCE_COLOR=1، فسيتم فرض تمكين مخرجات ألوان ANSI، حتى إذا تم تعيين NO_COLOR.
BUN_CONFIG_MAX_HTTP_REQUESTSالتحكم في الحد الأقصى لعدد طلبات HTTP المتزامنة المرسلة بواسطة fetch و bun install. الافتراضي هو 256. إذا كنت تواجه حدود معدل أو مشاكل في الاتصال، يمكنك تقليل هذا الرقم.
BUN_CONFIG_NO_CLEAR_TERMINAL_ON_RELOADإذا كان BUN_CONFIG_NO_CLEAR_TERMINAL_ON_RELOAD=true، فلن يقوم bun --watch بمسح وحدة التحكم عند إعادة التحميل
DO_NOT_TRACKتعطيل تحميل تقارير الأعطال إلى bun.report عند التعطل. على macOS و Windows، يتم تمكين تحميل تقارير الأعطال افتراضيًا. بخلاف ذلك، لم يتم إرسال القياس عن بُعد حتى 21 مايو 2024، لكننا نخطط لإضافة القياس عن بُعد في الأسابيع القادمة. إذا كان DO_NOT_TRACK=1، فسيتم تعطيل تحميل تقارير الأعطال والقياس عن بُعد تلقائيًا.
BUN_OPTIONSيلحق وسائط سطر الأوامر بأي تنفيذ لـ Bun. على سبيل المثال، BUN_OPTIONS="--hot" يجعل bun run dev يتصرف مثل bun --hot run dev

التخزين المؤقت لمترجم وقت التشغيل

بالنسبة للملفات الأكبر من 50 كيلوبايت، يقوم Bun بتخزين المخرجات المترجمة في $BUN_RUNTIME_TRANSPILER_CACHE_PATH أو دليل التخزين المؤقت الخاص بالمنصة. هذا يجعل واجهات سطر الأوامر التي تستخدم Bun يتم تحميلها بشكل أسرع.

التخزين المؤقت للمترجم هذا عالمي ومشترك عبر جميع المشاريع. من الآمن حذف التخزين المؤقت في أي وقت. إنه تخزين مؤقت قابل للعنوان بالمحتوى، لذا لن يحتوي أبدًا على إدخالات مكررة. من الآمن أيضًا حذف التخزين المؤقت أثناء تشغيل عملية Bun.

يوصى بتعطيل هذا التخزين المؤقت عند استخدام أنظمة الملفات المؤقتة مثل Docker. تعطل صور Docker الخاصة بـ Bun هذا التخزين المؤقت تلقائيًا.

تعطيل التخزين المؤقت لمترجم وقت التشغيل

لتعطيل التخزين المؤقت لمترجم وقت التشغيل، عيّن BUN_RUNTIME_TRANSPILER_CACHE_PATH إلى سلسلة فارغة أو السلسلة "0".

sh
BUN_RUNTIME_TRANSPILER_CACHE_PATH=0 bun run dev

ماذا يخزن؟

يخزن:

  • المخرجات المترجمة للملفات المصدرية الأكبر من 50 كيلوبايت.
  • خريطة المصدر للمخرجات المترجمة للملف

يتم استخدام امتداد الملف .pile لهذه الملفات المخزنة مؤقتًا.

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