قم بتشغيل البرامج النصية التي تضع وتستخدم متغيرات البيئة عبر المنصات
إشعار: لا يزال المتقاطع يعمل بشكل جيد ، ولكنه في وضع الصيانة. لن يتم إضافة أي ميزات جديدة ، سيتم إصلاح الحشرات الخطيرة وحالات الشائعة فقط ، وسيتم الحفاظ عليها فقط مع Node.js مع مرور الوقت. يتعلم أكثر
ستختنق معظم مطالبات أوامر Windows عند تعيين متغيرات البيئة باستخدام NODE_ENV=production من هذا القبيل. (الاستثناء هو bash على Windows ، الذي يستخدم Bash الأصلي.) وبالمثل ، هناك اختلاف في كيفية استخدام أوامر Windows و Posix للبيئة. مع POSIX ، يمكنك استخدام: $ENV_VAR وعلى Windows ، يمكنك استخدام %ENV_VAR% .
يقوم cross-env بعمله حتى تتمكن من الحصول على أمر واحد دون القلق بشأن إعداد أو استخدام متغير البيئة بشكل صحيح للنظام الأساسي. ما عليك سوى تعيينه كما لو كنت قيد التشغيل على نظام posix ، وسيهتم cross-env بوضعه بشكل صحيح.
cross-env مقابل cross-env-shell يتم توزيع هذه الوحدة عبر NPM المغطاة بالعقدة ويجب تثبيتها كأحد devDependencies مشروعك:
npm install --save-dev cross-env
تحذير! تأكد من أنه عند تثبيت الحزم ، تقوم تهجئة الأشياء بشكل صحيح لتجنب تثبيت البرامج الضارة عن طريق الخطأ
ملاحظة: الإصدار 7 من Cross-ENV يدعم فقط Node.js 10 وأعلى ، لاستخدامه على Node.js 8 أو Lower Install الإصدار 6
npm install --save-dev cross-env@6
أستخدم هذا في البرامج النصية لـ NPM:
{
"scripts" : {
"build" : " cross-env NODE_ENV=production webpack --config build/webpack.config.js "
}
} في نهاية المطاف ، يكون الأمر الذي يتم تنفيذه (باستخدام cross-spawn ) هو:
webpack --config build/webpack.config.js
سيتم تعيين متغير بيئة NODE_ENV بواسطة cross-env
يمكنك تعيين متغيرات بيئة متعددة في وقت واحد:
{
"scripts" : {
"build" : " cross-env FIRST_ENV=one SECOND_ENV=two node ./my-program "
}
}يمكنك أيضًا تقسيم أمر إلى عدة أدوات ، أو فصل إعلان متغيرات البيئة عن تنفيذ الأمر الفعلي. يمكنك أن تفعل ذلك بهذه الطريقة:
{
"scripts" : {
"parentScript" : " cross-env GREET= " Joe " npm run childScript " ,
"childScript" : " cross-env-shell " echo Hello $GREET " "
}
} حيث يحتفظ childScript بالأمر الفعلي للتنفيذ ، ويقوم parentScript بتعيين متغيرات البيئة للاستخدام. ثم بدلاً من تشغيل childscript تقوم بتشغيل الوالد. يعد هذا مفيدًا جدًا لإطلاق نفس الأمر مع متغيرات ENV مختلفة أو عندما تكون متغيرات البيئة طويلة جدًا بحيث لا تكون كل شيء في سطر واحد. وهذا يعني أيضًا أنه يمكنك استخدام بناء جملة $GREET env var حتى على النوافذ التي تتطلب عادةً أن تكون %GREET% .
إذا سبقت علامة بالدولار مع عدد فردي من الانزلاق الخلفي ، فلن يتم استبدال بيان التعبير. لاحظ أن هذا يعني أن الخلايا المتراكمة بعد هروب سلسلة JSON حدثت. لن يتم استبدال "FOO=\$BAR" . "FOO=\\$BAR" سيتم استبداله على الرغم من.
أخيرًا ، إذا كنت ترغب في تمرير سلسلة JSON (على سبيل المثال ، عند استخدام TS-Loader) ، يمكنك القيام بما يلي:
{
"scripts" : {
"test" : " cross-env TS_NODE_COMPILER_OPTIONS={ \" module \" : \" commonjs \" } node some_file.test.ts "
}
} إيلاء اهتمام خاص إلى backslash الثلاثي (\) قبل الاقتباسات المزدوجة (") وغياب عروض الأسعار المفردة (') . يجب استيفاء هاتين الشرطين من أجل العمل على كل من Windows و Unix.
cross-env مقابل cross-env-shell تكشف وحدة cross-env صناديقتين: cross-env و cross-env-shell . أول واحد ينفذ الأوامر باستخدام cross-spawn ، بينما يستخدم الخيار الثاني خيار shell من spawn العقدة.
إن حالة الاستخدام الرئيسية لـ cross-env-shell هي عندما تحتاج إلى متغير بيئة ليتم تعيينه عبر البرنامج النصي الكامل المضمّن ، بدلاً من أمر واحد فقط.
على سبيل المثال ، إذا كنت ترغب في تطبيق متغير البيئة على عدة أوامر في السلسلة ، فستحتاج إلى لفها في عروض الأسعار واستخدام cross-env-shell بدلاً من cross-env .
{
"scripts" : {
"greet" : " cross-env-shell GREETING=Hi NAME=Joe " echo $GREETING && echo $NAME " "
}
} قاعدة الإبهام هي: إذا كنت تريد أن تمر إلى أمر cross-env الذي يحتوي على أحرف قذيفة خاصة تريد تفسيرها ، فاستخدم cross-env-shell . خلاف ذلك التمسك cross-env .
على Windows ، تحتاج إلى استخدام cross-env-shell ، إذا كنت ترغب في التعامل مع أحداث الإشارة داخل البرنامج. هناك حالة شائعة لذلك هي عندما تريد التقاط حدث SIGINT تم استدعاؤه عن طريق الضغط على Ctrl + C على واجهة سطر الأوامر.
يرجى ملاحظة أن npm يستخدم cmd افتراضيًا ولا يدعم استبدال الأوامر ، لذلك إذا كنت ترغب في الاستفادة من ذلك ، فأنت بحاجة إلى تحديث .npmrc لتعيين script-shell على PowerShell. تعرف على المزيد هنا.
لقد قمت في الأصل بإنشاء هذا لحل مشكلة كنت أواجهها مع البرامج النصية NPM الخاصة بي في شكل زاوي. هذا جعل المساهمة في المشروع أسهل بكثير لمستخدمي Windows.
env-cmd - يقرأ متغيرات البيئة من ملف بدلاً من ذلك@naholyr/cross-env - cross-env مع دعم وضع القيم الافتراضية تبحث للمساهمة؟ ابحث عن ملصق العدد الأول الجيد.
يرجى تقديم مشكلة عن الأخطاء أو الوثائق المفقودة أو السلوك غير المتوقع.
انظر الحشرات
هذا المشروع في وضع الصيانة ولن يتم النظر في طلبات ميزة جديدة.
يتعلم أكثر
شكراً لهؤلاء الناس (مفتاح الرموز التعبيرية):
كينت سي دودز ؟ | يا تشوانغ ؟ | جيمس هاريس | compumike08 ؟ | دانييل رودريغيز ريفو ؟ | جوناس كينهولز ؟ | هوغو وود ؟ |
ثيبود توماس ؟ | دانييل ري لوبيز | أميلا وليهيندا ؟ | بول بيتس ؟ | تيرنر هايز ؟ | سوهاس كارانث | سفين |
D. Nicolás Lopez Zelaya | يوهان هيرنانديز | الأردن نيلسون ؟ | جيسون كوك | Bibo5088 | إريك بيري ؟ | Michaël de Boey |
لوري إسكولا | Devuxer | دانيال |
يتبع هذا المشروع مواصفات جميع المساهمين. مساهمات من أي نوع ترحيب!
ملاحظة: تمت إضافة هذا في وقت متأخر إلى المشروع. إذا كنت قد ساهمت في هذا المشروع بأي شكل من الأشكال ، فيرجى تقديم طلب سحب لإضافة نفسك إلى القائمة باتباع التعليمات الواردة في
CONTRIBUTING.md
معهد ماساتشوستس للتكنولوجيا