الوحدة النمطية لتسطح المشكلات github المسمى "العدد الأول الجيد" (والمتغيرات المماثلة) لأي منظمة GitHub أو repo أو مشروع محدد مسبقًا.
لاستخدام المشكلة الأولى الجيدة ، ستحتاج إلى تثبيت بعض الأشياء:
npm i -g npm تثبيت:
npm install libgfiمثال على كيفية استخدام libgfi في تطبيق node.js:
const gfi = require ( 'libgfi' )
let log = async ( ) => {
let issues = await gfi ( 'microsoft' ) // search the 'microsoft' GitHub organization
issues . forEach ( function ( issue ) {
console . log ( '#' + issue . pr + ': ' + issue . title )
} )
}
log ( )ابحث في مستودع محدد:
const gfi = require ( 'libgfi' )
gfi ( 'golang/dep' )
. then ( ( issues ) => {
console . log ( issues )
} )
. catch ( ( error ) => {
console . error ( error )
} )تمرير مجموعة مخصصة من المنظمات للبحث:
const gfi = require ( 'libgfi' )
const options = {
projects : {
node : {
name : 'Node.js' , // Human readable name
q : 'org:nodejs is:issue is:open label:"good first issue"' , //GitHub search query
description : "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine." // Human readable description
}
}
}
let log = async ( ) => {
console . log ( await goodFirstIssue ( 'node' , options ) ) // search the 'node' property
}
log ( )تمرير بيانات اعتماد GitHub (انظر وثائق مصادقة Octokit لمزيد من التفاصيل) للمصادقة لزيادة حد معدل المعدل بشكل كبير:
const gfi = require ( 'libgfi' )
const options = {
auth : '<replace_with_your_github_secret_personal_access_token>' // or username/password + 2fa, or app installation access token
}
let log = async ( ) => {
let issues = await gfi ( 'microsoft' , options ) // search the 'microsoft' GitHub organization
issues . forEach ( function ( issue ) {
console . log ( '#' + issue . pr + ': ' + issue . title )
} )
}
log ( )تحتوي المشكلة الأولى الجيدة على أمثلة/ دليل ، نحاول فيه الحفاظ على أمثلة مختلفة حول كيفية استخدام المشكلة الأولى كوحدة نمطية. إذا كنت ترغب في المساهمة في الأمثلة ، فالرجاء عدم التردد في تقديم العلاقات العامة! ؟
يمكنك سحب استفساراتك مباشرة من بحث GitHub قياسي! إذا كنت ترغب في إنشاء شيء أكثر تعقيدًا قليلاً ، فيمكنك استخدام أداة البحث المتقدمة إذا كنت ترغب في إنشاء استعلامات مخصصة أكثر تحديداً: https://github.com/search/advanced
بصفته CLI ، يستخدم good-first-issue إطار عمل Commander.js CLI. إذا كنت تريد أن تفهم بشكل أفضل كيفية بناء CLI لدينا ، فإن Commander.js موثق جيدًا. تستخدم أيضًا الطباشير للتلوين الطرفي و Boxen لتبسيط تنفيذ حاوية الإخراج.
العدد الأول الجيد يتبع عملية إصدار صارمة نسبيًا تهدف إلى ضمان تدفقات التوابل.
| النسخة الدلالية | يكتب | سبب |
|---|---|---|
| الرائد ( x .xx) | كسر التغييرات والترقيات غير التافهة | التأكد من أن المستخدمين النهائيين يمكنهم الاعتماد على القضية الأولى الجيدة وليس الانهيار ، لكنهم يستهلكون ذلك |
| قاصر (x. x .x) | إضافات المشروع ، إضافات ميزة أخرى | بعد معيار Semver ، تكون الإضافات المشروع وإضافات الميزات هي تحسينات متوافقة مع عكسيتها. نحاول عمومًا شحن إضافة واحدة لكل قاصر. |
| التصحيح (xx x ) | إصلاحات الأخطاء ، والتحسينات البسيطة للبيانات الوصفية والمحتوى | إصلاحات صغيرة ، بالكاد مرئية لتحسين UX/DX أو إصلاح الوحدة النمطية |
نستخدم كل من ملصقات Github و Milestones لتتبع الإصدارات. نظرًا لأن إضافات المشروع تعتبر إصدارًا بسيطًا ، فإننا نفضل أن نتفوق على ذلك وشحنها بشكل فردي بدلاً من شحن الكثير مرة واحدة. قد يتم مراجعة هذه الوتيرة لاحقًا ، ولكن في الوقت الحالي ، تقدم الحاجة إلى قائمة انتظار إصدار وإعداد الأشياء لإطلاق سراحها بالفعل.
نستخدم ملصق قائمة انتظار الإصدار والمعلم لتصوير PRS التي تمت مراجعتها وهي جاهزة للإصدار.
بمجرد أن يصبح PR جاهزًا لإصداره ، ستتم إضافة علامة فارقة يرتبط بإصدار Semver الذي سيتم إصداره فيه. من الناحية المثالية ، سيتم استخدام هذا في النهاية لتتبع Changelog ، ولكن في الوقت الحالي ، يعد هذا مجرد وسيلة جيدة للحفاظ على تنظيمها. للحفاظ على الأمور مرتبة ، بمجرد شحن نسخة جديدة ، سيتم إغلاق المعلم.
إذا كنت مهتمًا بتثبيت المشكلات والمساهمة مباشرة في قاعدة التعليمات البرمجية ، فيرجى الاطلاع على المستند المساهمة. md