ملحق Prettier لـ SQL يستخدم sql-parser-cst وخوارزمية التنسيق Prettier الفعلية.
جربه على الهواء مباشرة!
مثل Prettier for JavaScript، يقوم هذا البرنامج الإضافي بتنسيق تعبيرات SQL بشكل مختلف اعتمادًا على طولها. سيتم تنسيق استعلام SQL قصير في سطر واحد:
SELECT a, b, c FROM tbl WHERE x > 10 ;
استعلام أطول، سيتم طباعة كل جملة على سطر منفصل:
SELECT id, client . name , client . priority
FROM client
WHERE client . id IN ( 12 , 18 , 121 );
حتى أطول يحصل على محتويات كل جملة ذات مسافة بادئة:
SELECT
client . id ,
client . name AS client_name,
organization . name AS org_name,
count ( orders . id ) AS nr_of_orders
FROM
client
LEFT JOIN organization ON client . organization_id = organization . id
LEFT JOIN orders ON orders . client_id = client . id
WHERE
client . status = ' active '
AND client . id IN ( 28 , 214 , 457 )
AND orders . status IN ( ' active ' , ' pending ' , ' processing ' )
GROUP BY client . id
ORDER BY client . name
LIMIT 100 ;
يحتفظ هذا البرنامج المساعد حاليًا بمعظم عناصر بناء الجملة ويركز بشكل أساسي على تخطيط المسافة البيضاء.
راجع STYLE_GUIDE للحصول على نظرة عامة على نمط تنسيق SQL المستخدم.
قم بتثبيته كأي ملحق Prettier آخر:
npm install --save-dev prettier prettier-plugin-sql-cst
# or
pnpm add --save-dev prettier prettier-plugin-sql-cst
# or
yarn add --dev prettier prettier-plugin-sql-cst
ثم استخدمه على ملفات SQL من خلال أداة سطر الأوامر Prettier أو ملحق Prettier للمحرر الذي تختاره.
افتراضيًا، سيحدد البرنامج المساعد لهجة SQL بناءً على امتداد الملف:
.sql
أو .sqlite
- SQLite.bigquery
- BigQuery يمكنك تجاوز هذا السلوك بتكوين أجمل في ملف .prettierrc.json
:
{
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
أو يمكنك أيضًا تخزينه داخل package.json
الخاص بك:
{
"prettier" : {
"plugins" : [ " prettier-plugin-sql-cst " ],
"overrides" : [
{
"files" : [ " *.sql " ],
"options" : { "parser" : " bigquery " }
}
]
}
}
يوفر البرنامج المساعد المحللين التاليين:
sqlite
bigquery
postgresql
( تجريبي! توقع الأعطال )mysql
( تجريبي! توقع حدوث أعطال )mariadb
( تجريبي! توقع حدوث أعطال ) تنطبق خيارات Prettier القياسية printWidth وtabWidth وuseTabs. هناك أيضًا بعض الخيارات الخاصة بـ SQL:
خيار واجهة برمجة التطبيقات | تقصير | وصف |
---|---|---|
sqlKeywordCase | upper | تحويل الكلمات الأساسية SQL إلى حالة upper أو lower ، أو preserve الموجودة. لاحظ أن preserve في الوقت الحالي غير متوافق إلى حد ما مع sqlCanonicalSyntax: true (على سبيل المثال، الكلمات الأساسية AS المضافة ستكون دائمًا بأحرف كبيرة). |
sqlParamTypes | [] | مجموعة من أنواع المعلمات المرتبطة: ? , ?nr , $nr , :name , @name , $name . |
sqlCanonicalSyntax | true | عند التمكين، يتم تنفيذ بعض التغييرات المدروسة للكلمات الرئيسية وعوامل التشغيل، مثل فرض استخدام AS في الأسماء المستعارة واستبدال مقارنات <> بـ != . راجع STYLE_GUIDE لمزيد من التفاصيل. (منذ 0.11.0) |
sqlAcceptUnsupportedGrammar | false | عادةً عندما يواجه المكون الإضافي بناء جملة SQL وهو لا يدعمه، فسيؤدي إلى حدوث خطأ ولن يقوم بتنسيق أي شيء على الإطلاق. مع تمكين هذا الخيار، فإنه سيتخطى عبارات SQL التي لا يتعرف عليها، ويتركها كما هي. |
لاستخدام هذا المكون الإضافي داخل VSCode، قم بتثبيت ملحق Prettier VSCode.
اتبع مستندات Prettier VSCode لتكوينها كمنسق افتراضي.
قد تحتاج أيضًا إلى تكوين prettier.documentSelectors لتمكين Prettier لملفات *.sql
.
لمعرفة ما هو Prettier وما لا يفعله - افتح نافذة VSCode Output وحدد القائمة المنسدلة Prettier. في التنسيق، يجب أن تعرض النافذة inferredParser
الخاص بك. يجب إعادة تأكيد ذلك من خلال إظهار "parser": "sqlite"
(أو أي محلل قمت بتكوينه داخل قسم overrides
التكوين الأجمل) plugins
مع المسار إلى هذه الحزمة. إذا كنت لا ترى هذا الجزء، فإن Prettier لا تستخدم هذه الحزمة.
يعتمد دعم لهجات SQL الجديدة على دعم هذه اللهجات بواسطة sql-parser-cst. إذا كنت تريد ذلك حقًا، يمكنك فتح مشكلة جديدة لذلك في مستودع المحلل اللغوي. لكن انتبه إلى أن تنفيذ دعم المحلل اللغوي للهجات الجديدة يتطلب الكثير من العمل. طالما أن التنفيذ المستمر لـ PostgreSQL وMySQL وMariaDB لم ينته بعد، فمن غير المرجح أن يبدأ العمل على أي لهجة أخرى.
استخدم prettier-plugin-embed مع prettier-plugin-sql-cst
.
يدعم هذا البرنامج المساعد حاليًا لهجتين SQL:
كما أن لديها دعمًا تجريبيًا للهجات التالية:
القيد الرئيسي هو أن المحلل اللغوي لا يدعم بناء الجملة الكامل لهذه اللهجات. يجب على المرء أن يتوقع تعطل المحلل اللغوي بسبب بناء الجملة الأكثر تحديدًا لهذه اللهجات. ولكن طالما نجح التحليل، يجب أن ينجح التنسيق أيضًا. بشكل أساسي، يمكن للمرء أن يتوقع عمل تنسيق عبارات SELECT، INSERT، UPDATE، DELETE.
للتغلب على هذا القيد، يمكنك تمكين خيار sqlAcceptUnsupportedGrammar
، والذي سيجعل المكون الإضافي يتخطى عبارات SQL التي لا يتعرف عليها.
لا تزال تفاصيل نمط تنسيق SQL عرضة للتغيير إلى حد كبير. على الرغم من أن المبادئ العامة ينبغي أن تكون في مكانها الصحيح الآن.