# كيف تحرصون على أن يكون ملف .env الخاص بكم محدّثًا دائمًا وأن يكون الفريق كله متزامنًا عليه؟

ترجمة آلية للمنشور الأصلي، لم يراجعها مترجم بشري. قد لا تكون المعلومات التاريخية محدثة.

كيف تحرصون على أن يكون ملف .env الخاص بكم محدّثًا دائمًا وأن يكون الفريق كله متزامنًا عليه؟
كان حلنا إعادة تعريف "ما هو ملف env"، فهو ليس ملفًا يحتفظ به أحد ويحدّثه يدويًا، بل build artifact يُنشأ تلقائيًا في كل مرة يُشغَّل فيها التطبيق.

لفترة طويلة كان حلنا لإدارة الـ env سيئًا ويدويًا: رسالة في Slack. 
(إن كنتم تتعرفون على هذا فارفعوا أيديكم...)
إذا أضاف أحدهم متغير بيئة جديدًا ودفع الشيفرة، وبعد ثلاثة أيام يقوم شخص آخر بـ pull ويشغّل ويحصل على انهيار بسبب متغير لم يسمع به قط. ثم تأتي الرسالة المعتادة أو التجوال بين رسائل Slack. وحتى لو مررنا ذلك عبر مدير أسرار مثل bitwarden، يظل وقت ثمين يُهدر بسبب عدم التزامن...

وفي منتجنا الذي يضم بالفعل عشرات الخدمات (واجهة أمامية وخلفية) تصبح المشكلة أكبر بكثير لأن لكل مشروع الـ env الخاص به.

لذلك كان حلنا الانتقال إلى السحابة - لكل خدمة اليوم سرّ (secret) واحد في Secret Manager من غوغل يحتفظ بكل متغيرات التطوير المحلية ككائن JSON. يكفي تحديث قيمة في مكان واحد - فيحصل عليها الفريق كله، مع سجل تاريخي (وبالمناسبة أيضًا إمكانية التراجع بسهولة).

ومن جهة المطوّر (DevEx) توقفت المزامنة عن كونها أمرًا يجب أن يتذكره أحد وصارت إجراءً تلقائيًا: كتبنا executor صغيرًا لـ Nx وعرّفناه كاعتمادية (dependency) لكل dev target لدينا، بحيث إنه حتى قبل أن يعمل التطبيق، يكون Nx قد سحب أحدث الأسرار وكتب ملف env جديدًا. 

وماذا نفعل إذا أردنا التجاوز (override) محليًا؟
حللنا ذلك أيضًا بأناقة - كل ما يوضع في env.local يُدمج فوق ما جاء من السحابة. تبقى القيم المشتركة مشتركة، ويبقى حاسوبك لك.

هناك ثمن صغير يجب دفعه - كل فترة نحتاج إلى تجديد اتصالنا بـ GCP (يحدث التجديد تلقائيًا لكن لا يزال يجب الموافقة على الاتصال عبر المتصفح) وتتطلب تحديثات الأسرار العمل مع واجهة الأسرار المروّعة من غوغل (التي خِطتُ لها أيضًا حلًا على شكل إضافة متصفح ترتّبها)، لكن منذ أن فعلنا ذلك، لم يعد "يعمل عندي" مشكلة متغيرات البيئة.

إذا كنتم لا تزالون تكافحون لمزامنة ملفات env في الفريق فأنصح بشدة بتبنّي طريقة العمل هذه، فهي توفر الكثير من الصداع ووقت المطورين الثمين، وتركّز على الأمور المهمة حقًا

Original: https://ofershap.github.io/posts/linkedin-7495353124623278080/
Source: https://www.linkedin.com/posts/ofershap_%D7%90%D7%99%D7%9A-%D7%90%D7%AA%D7%9D-%D7%93%D7%95%D7%90%D7%92%D7%99%D7%9D-%D7%A9%D7%94%D7%A7%D7%95%D7%91%D7%A5-env-%D7%A9%D7%9C%D7%9B%D7%9D-%D7%99%D7%94%D7%99%D7%94-%D7%AA%D7%9E%D7%99%D7%93-activity-7495353124623278080-oV7i
Published: 2026-08-18T08:37:21.837000+03:00
