يقرأ Bun ملفات .env الخاصة بك تلقائيًا ويوفر طرقًا اصطلاحية لقراءة وكتابة متغيرات البيئة الخاصة بك برمجيًا. بالإضافة إلى ذلك، يمكن تكوين بعض جوانب سلوك وقت تشغيل Bun باستخدام متغيرات بيئة خاصة بـ Bun.
تعيين متغيرات البيئة
يقرأ Bun الملفات التالية تلقائيًا (مدرجة بترتيب تصاعدي للأسبقية).
.env.env.production،.env.development،.env.test(اعتمادًا على قيمةNODE_ENV).env.local
FOO=hello
BAR=worldيمكن أيضًا تعيين المتغيرات عبر سطر الأوامر.
FOO=helloworld bun run dev# استخدام CMD
set FOO=helloworld && bun run dev
# استخدام PowerShell
$env:FOO="helloworld"; bun run devحل متعدد المنصات مع Windows">
للحصول على حل متعدد المنصات، يمكنك استخدام bun shell. على سبيل المثال، أمر bun exec.
bun exec 'FOO=helloworld bun run dev'على Windows، ستستخدم نصوص package.json التي يتم استدعاؤها باستخدام bun run تلقائيًا bun shell، مما يجعل ما يلي أيضًا متعدد المنصات.
"scripts": {
"dev": "NODE_ENV=development bun --watch app.ts",
},أو برمجيًا عن طريق تعيين خاصية لـ process.env.
process.env.FOO = "hello";تحديد ملفات .env يدويًا
يدعم Bun --env-file لتجاوز ملف .env المحدد الذي سيتم تحميله. يمكنك استخدام --env-file عند تشغيل النصوص البرمجية في وقت تشغيل bun، أو عند تشغيل نصوص package.json.
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 حيث تريد الاعتماد فقط على متغيرات بيئة النظام.
bun run --no-env-file index.tsيمكن تكوين هذا أيضًا في bunfig.toml:
# تعطيل تحميل ملفات .env
env = falseسيتم تحميل ملفات البيئة المقدمة صراحةً عبر --env-file حتى عند تعطيل التحميل الافتراضي.
علامات الاقتباس
يدعم Bun علامات الاقتباس المزدوجة، والمفردة، والبادئات الخلفية للحرف النصي:
FOO='hello'
FOO="hello"
FOO=`hello`التوسيع
يتم توسيع متغيرات البيئة تلقائيًا. هذا يعني أنه يمكنك الرجوع إلى المتغيرات المحددة مسبقًا في متغيرات البيئة الخاصة بك.
FOO=world
BAR=hello$FOOprocess.env.BAR; // => "helloworld"هذا مفيد لإنشاء سلاسل الاتصال أو القيم المركبة الأخرى.
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يمكن تعطيل هذا عن طريق الهروب من $ باستخدام خط مائل عكسي.
FOO=world
BAR=hello\$FOOprocess.env.BAR; // => "hello$FOO"dotenv
بشكل عام، لن تحتاج إلى dotenv أو dotenv-expand بعد الآن، لأن Bun يقرأ ملفات .env تلقائيًا.
قراءة متغيرات البيئة
يمكن الوصول إلى متغيرات البيئة الحالية عبر process.env.
process.env.API_TOKEN; // => "secret"يعرض Bun أيضًا هذه المتغيرات عبر Bun.env و import.meta.env، وهو اسم مستعار بسيط لـ process.env.
Bun.env.API_TOKEN; // => "secret"
import.meta.env.API_TOKEN; // => "secret"لطباعة جميع متغيرات البيئة المحددة حاليًا إلى سطر الأوامر، قم بتشغيل bun --print process.env. هذا مفيد للتنقيح.
bun --print process.env
BAZ=stuff
FOOBAR=aaaaaa
<lots more lines>TypeScript
في TypeScript، جميع خصائص process.env مكتوبة كـ string | undefined.
Bun.env.whatever;
// string | undefinedللحصول على الإكمال التلقائي وإخبار TypeScript بمعاملة متغير كسلسلة غير اختيارية، سنستخدم دمج الواجهات.
declare module "bun" {
interface Env {
AWESOME: string;
}
}أضف هذا السطر إلى أي ملف في مشروعك. سيضيف عالميًا الخاصية AWESOME إلى process.env و Bun.env.
process.env.AWESOME; // => stringتكوين Bun
تقرأ Bun متغيرات البيئة هذه وتكوين جوانب من سلوكها.
| الاسم | الوصف |
|---|---|
NODE_TLS_REJECT_UNAUTHORIZED | NODE_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".
BUN_RUNTIME_TRANSPILER_CACHE_PATH=0 bun run devماذا يخزن؟
يخزن:
- المخرجات المترجمة للملفات المصدرية الأكبر من 50 كيلوبايت.
- خريطة المصدر للمخرجات المترجمة للملف
يتم استخدام امتداد الملف .pile لهذه الملفات المخزنة مؤقتًا.