Customer Convos: Alistair Brown، ShopKeep

هذه القطعة جزء من سلسلة تحويلات العملاء . نحن نشارك قصصًا حول كيفية استخدام الأشخاص لـ npm في العمل. ترغب في مشاركة أفكارك؟ أرسل لنا سطرًا .

س: مرحبًا! هل يمكنك ذكر اسمك وماذا تفعل؟

ج: أهوي ، أنا أليستير براون وأنا مهندس الواجهة الأمامية الرائد في ShopKeep ، وأركز بشكل أساسي على تطبيق BackOffice ، والذي يتيح لأكثر من 23000 تاجر القدرة على إدارة عملياتهم التجارية من أي مكان. باستخدام BackOffice من ShopKeep ، يدير أصحاب الأعمال كل شيء بدءًا من إدارة المخزون وحتى الوصول إلى تقارير مخصصة خاصة بأعمالهم ، لذلك يعد هذا عنصرًا حيويًا في منتج ShopKeep.

كيف هو يومك؟

تسير الأمور على ما يرام – يركز فريقي في الغالب على الواجهة الأمامية ، لذلك نستخدم npm عدة مرات كل يوم. نعمل حاليًا على إعداد بعض ترقيات التبعية للتأكد من استعدادنا للقفز إلى أحدث إصدار من React (v16) عند إصداره. من المهم بالنسبة لنا أن نبقى على اطلاع دائم ، ونحصل على مزايا التحسين وإصلاحات الأخطاء والأدوات الجديدة.

ما هو سجلك مع npm؟

لقد استخدمت npm في عدد قليل من الوظائف لإدارة التبعيات بالإضافة إلى نشر بعض المشاريع الشخصية كوحدات في سجل npm. قبل بضع سنوات ، حصلت على iKettle لعيد الميلاد وقضيت الكثير من تلك العطلة في إنشاء وحدة npm حتى أتمكن من غلي الماء عن بعد باستخدام JavaScript – ليست وحدة شائعة جدًا ، ولكن الكثير من المرح لبناء! في الآونة الأخيرة ، أنا متحمس بشأن إصدار npm5. لقد طرحناه للتو عبر أجهزة المطورين لدينا وعلى خوادم CI ، ونحن نرى الفوائد حقًا.

ما المشكلة التي واجهتك والتي ساعدتك مؤسسات npm في حلها؟

كانت المشكلة الرئيسية التي أردنا حلها هي القدرة على مشاركة التعليمات البرمجية بين المشاريع القادمة. سمح لنا إعداد منظمة npm بإنشاء وحداتنا الخاصة والتحكم في من يمكنه الوصول إليها. لقد أتاح لنا امتلاك حزم خاصة داخل المؤسسة حرية إنشاء وحدة ذات إصدار ، ولكن دون ضجة فتحها على العالم.

هل يمكنك إخبارنا بقصة حول حزمة معينة أردت أن تجعل هذه الحزم الخاصة تتيح لك فعلاً فعل ذلك؟

في Node.js Interactive Europe العام الماضي ، استوحيت الإلهام من حديث أريا ستيوارت بعنوان “Radical Modularity”. مع وضع مفهوم “أي شيء يمكن أن يكون حزمة” في الاعتبار ، بدأنا أولاً بألوان صغيرة لعلامتنا التجارية (JSON و SASS وما إلى ذلك) والتكوينات. لقد استكشفت سحب هذه المكونات من قاعدة التعليمات البرمجية الخاصة بنا إلى وحدات منفصلة كجزء من Code Smash (هاكاثوننا الداخلي). هذا سمح لنا باختبار المياه. نظرًا لأننا نكتب بشكل أساسي في React وأنشأنا عددًا من المكونات العامة ، كان هناك الكثير من الحزم التي أردنا استخراجها. في النهاية ، بدأنا في تعديل كل شيء واستخرجنا أصول الرموز الخاصة بنا.

كيف هي التجربة اليومية لاستخدام الحزم والمؤسسات الخاصة؟

إنه سهل للغاية. يومًا بعد يوم ، لا يوجد فرق بين استخدام أي باقة أخرى من npm. بمجرد إخراج الرمز في وحدة نمطية ، سنتعامل معه تمامًا مثل أي جزء آخر من تعليمات برمجية تابعة لجهة خارجية. كان هناك القليل من الخوف من أن تسبب بادئة النطاق مشاكل مع الأدوات الحالية ، ولكن حتى الآن لم تكن هناك مشاكل على الإطلاق – وهو إنجاز رائع!

هل شركتك مفتوحة المصدر؟ كيف تتفاوض بشأن ما تحتفظ به خاصًا وعامًا؟

لدينا عدة مستودعات للأدوات المفيدة التي فتحناها على GitHub ، ونأمل أن تكون هذه الأدوات نفسها مفيدة للمطورين الآخرين. تتراوح هذه الأدوات من shpkpr ، وهي أداة نستخدمها لإدارة التطبيقات في الماراثون ودعم عمليات النشر بدون توقف ، إلى روبوت Slack الخاص بوحدة التحكم في الحركة الجوية ، والذي يساعدنا في تنسيق عمليات النشر لجميع الخدمات المختلفة التي نقوم بتشغيلها. يعد التوريد المفتوح لمشروع ما مهمة مهمة ونريد دائمًا التأكد من أننا نفخر بما نصدره. يمنحنا استخدام الحزم الخاصة هذه الأرضية الوسطى ، مما يسمح لنا بفصل الشفرة القابلة لإعادة الاستخدام مع الاحتفاظ بها داخليًا حتى نكون مستعدين لعرضها.

إلى الأشخاص غير متأكدين من كيفية استخدامهم للحزم الخاصة ، كيف تشرح حالة الاستخدام؟

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

كيف ترى تحسن المنتج أو توسيعه في المستقبل؟

مع التطور السريع لنظام JavaScript البيئي ، قد يكون من الصعب مواكبة الإصدارات الجديدة فور ظهورها. يساعد الأمر “القديم” في تحقيق ذلك ، ولكن أي شيء يمكن بناؤه لمساعدة المطورين على البقاء على أحدث المستجدات والأفضل سيكون مفيدًا حقًا.

هل توصي بأن تستخدم المجموعات أو الشركات الأخرى المؤسسات؟

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

ما هي ميزة / اختراق npm المفضل لديك؟

أنا معجب كبير بنصوص npm. لقد سمح لنا بتوفير واجهة واحدة لأوامر مفيدة وتجنب إجبار المطورين على تثبيت التبعيات العالمية. بدءًا من إنشاء تطبيقنا باستخدام gulp ، وترقية الأدوات باستخدام برنامج shell script ، إلى نشر وحدات متعددة باستخدام lerna ، تظل تجربة المطور كما هي من خلال إخفاء العناصر الداخلية خلف بساطة “تشغيل npm”.

ما هي المشكلة الأكثر أهمية / إثارة للاهتمام / ذات الصلة في النظام البيئي لحزمة JavaScript في الوقت الحالي؟ إذا كان بإمكانك حلها بطريقة سحرية ، فكيف ستفعل ذلك؟

يُعد إنشاء مدير الحزم مشكلة يصعب حلها ومن الرائع رؤية هذا القدر الكبير من المشاركة في هذا المجال. عمليات التثبيت الحتمية أمر مهم حقًا ، لذا من الجيد رؤية ذلك في npm5 والغزل. أعتقد أن الخطوة الطبيعية التالية هي ملف قفل محايد للعميل. عندما يكون هناك عدة مطورين في مشروع ما ، فإن التأكد من أنه يمكننا نسخ بيئة التطوير عبر جميع أجهزة المطورين وخوادم CI أمر مهم للغاية – نستخدم ملف shrinkwrap (يتم الانتقال قريبًا إلى package-lock.json!) خاص بـ npm. يجب أن يسمح تقليل هذا الحاجز بين عملاء التعبئة والتغليف المختلفين بإجراء مزيد من التجارب على الأساليب والتحسينات الجديدة.

أي أشياء رائعة npm قامت بها شركتك وتريد الترويج لها؟

لا – نحن فقط مستخدمون سعداء!