PostCSS

PostCSS is a software development tool that uses JavaScript-based plugins to automate routine CSS operations.[3] It was designed by Andrey Sitnik with the idea taking its origin in his front-end work for Evil Martians.[4]

Functionality

PostCSS workflow

PostCSS is a framework to develop CSS tools.[5] It can be used to develop a template language such as Sass and LESS.[6]

The PostCSS core consists of:[7]

  • CSS parser that generates an abstract syntax tree
  • Set of classes that comprises the tree
  • CSS generator that generates a CSS line for the object tree
  • Code map generator for the CSS changes made

Features are made available through plugins. The plugins are small programs working with the object tree. After the core has transformed a CSS string into an object tree, the plugins analyze and change the tree. Then PostCSS generates a new CSS string for the plugin-changed tree.

PostCSS and its plugins are written in JavaScript and distributed through npm, which offer APIs for low-level JavaScript operations.

There are official tools making it possible to use PostCSS with build systems such as Webpack,[8]Gulp,[9] and Grunt.[10] There is also a console interface available.[11]Browserify or Webpack can be used to open PostCSS in a browser.[12]

Syntaxes

PostCSS allows changing the parser and generator. In this case, PostCSS could be used to work with the Less[13] and SCSS[14] sources. However, PostCSS on its own cannot compile Sass or Less to CSS. What it does is change the original files — for instance, by sorting the CSS properties or checking the code for mistakes. PostCSS supports SugarSS.[15]

Plugins

PostCSS plugins perform different CSS processing tasks ranging from analysis and properties sorting to minification.

The complete plugin list can be found on postcss.parts, with some examples listed below.

  • أداة Autoprefixer لإضافة ومسح بادئات المتصفح. [ 16 ]
  • وحدات CSS لعزل مُحدِّدات CSS وتنظيم الكود. وهي مُضمَّنة كجزء من Webpack . [ 17 ] [ 18 ]
  • يُستخدم stylelint لتحليل كود CSS بحثًا عن الأخطاء والتحقق من اتساق الأنماط. [ 19 ]
  • يقوم stylefmt بتصحيح كود CSS وفقًا لإعدادات stylelint. [ 20 ]
  • PreCSS لتنفيذ بعض وظائف المعالجة المسبقة لـ Sass / Less . [ 21 ]
  • postcss-preset-env لمحاكاة الميزات من مسودات مواصفات CSS غير المكتملة. [ 22 ]
  • تُستخدم أداة cssnano لتقليل حجم ملفات CSS عن طريق إزالة المسافات وإعادة كتابة الكود. [ 23 ]
  • يُستخدم RTLCSS لتغيير كود CSS بحيث يكون التصميم مناسبًا للكتابة من اليمين إلى اليسار (كما هو الحال في اللغتين العربية والعبرية ). [ 24 ]
  • تُستخدم مكتبات postcss-assets و postcss-inline-svg و postcss-sprites للعمل مع الرسومات. [ 25 ] [ 26 ] [ 27 ]

تاريخ

خلال مشروع إعادة العمل، اقترح تي جيه هولواي تشوك فكرة معالجة CSS المعيارية في 1 سبتمبر 2012. [ 28 ] وفي 28 فبراير 2013، أعلن تي جيه ذلك علنًا. [ 29 ]

في 14 مارس 2013، أسفر عمل أندريه سيتنيك في تطوير واجهة المستخدم الأمامية لموقع Evil Martians عن إطلاق Autoprefixer، وهو إضافة برمجية تعتمد على Rework. [ 30 ] في البداية، كان اسم الإضافة rework-vendors. [ 31 ]

مع نمو Autoprefixer، لم يعد Rework قادرًا على تلبية احتياجاته. [ 32 ] في 7 سبتمبر 2013، [ 33 ] بدأ أندريه سيتنيك بتطوير PostCSS استنادًا إلى أفكار Rework. [ 34 ]

في غضون ثلاثة أشهر، تم إصدار أول إضافة لـ PostCSS، وهي grunt-pixrem. [ 35 ] في 22 ديسمبر 2013، تم نقل الإصدار 1.0 من Autoprefixer إلى PostCSS. [ 36 ]

بالنسبة لـ PostCSS، ينصب التركيز الأساسي على الأسلوب على الخيمياء . [ 37 ] يرمز شعار المشروع إلى حجر الفلاسفة . [ 38 ] تستمد إصدارات PostCSS الرئيسية والثانوية أسماءها من شياطين كتاب Ars Goetia . [ 39 ] على سبيل المثال، يُطلق على الإصدار 1.0.0 اسم Marquis Decarabia.

أثار مصطلح "المعالج اللاحق" بعض اللبس. [ 40 ] استخدم فريق PostCSS هذا المصطلح للدلالة على أن PostCSS ليس لغة قوالب (معالج مسبق) بل أداة CSS. مع ذلك، يرى بعض المطورين أن مصطلح "المعالج اللاحق" أنسب لأدوات المتصفح (على سبيل المثال، -prefix-free). [ 41 ] ازداد الوضع تعقيدًا بعد إصدار PreCSS. الآن، يستخدم فريق PostCSS مصطلح "المعالج" بدلًا من "المعالج اللاحق". [ 42 ]

مراجع

  1. "الإصدار 8.5.19" . 13 يوليو 2026. تم الاطلاع عليه في 14 يوليو 2026 .
  2. "postcss/LICENSE at main · postcss/postcss" . GitHub . 2013-09-24 . تم الاطلاع عليه بتاريخ 2021-03-19 .
  3. براسي، كيز (23 سبتمبر 2015). "نظرة معمقة على PostCSS: ما تحتاج إلى معرفته" . Envato Tuts+ . تم الاطلاع عليه بتاريخ 19 مارس 2021 .
  4. سيتنيك، أندريه (13 ديسمبر 2014). "إضافة شارة المريخيين الأشرار · postcss/postcss@513f9c1" . جيت هاب . تم الاسترجاع في 19 مارس 2021 .
  5. uMaxmaxmaximus؛ سيتنيك، أندريه (2016-08-04). "لماذا نحتاج إلى PostCSS إذا كان لدينا Webpack o_O؟ · المشكلة رقم 861 · postcss/postcss" . GitHub . تم الاسترجاع في 2021-03-19 .
  6. براسي، كيز (21-10-2015). "نظرة معمقة على PostCSS: المعالجة المسبقة باستخدام "PreCSS""" . GitHub . تم الاسترجاع في 19-03-2021 .
  7. سيتنيك، أندريه (24 يونيو 2015). أندريه سيتنيك - ما بعد CSS: المستقبل بعد Sass وLESS - يوتيوب . يوتيوب (شريط فيديو). BocoupLLC . تم الاطلاع عليه بتاريخ 19 مارس 2021 .
  8. webpack-contrib (2014-10-03). "webpack-contrib/postcss-loader: أداة تحميل PostCSS لـ webpack" . GitHub . تم الاطلاع عليه بتاريخ 2021-03-19 .
  9. كوزمين، أندريه (17 أغسطس 2014). "postcss/gulp-postcss: تمرير CSS عبر معالجات PostCSS بتحليل واحد" . جيت هاب . تم الاسترجاع في 19 مارس 2021 .
  10. نيكيتينكو، ديمتري (25-09-2014). "nDmitry/grunt-postcss: تطبيق عدة معالجات لاحقة على CSS باستخدام PostCSS" . GitHub . تم الاطلاع عليه بتاريخ 19-03-2021 .
  11. كرزيمينسكي، داميان؛ زيمرمان، رايان؛ سينياوسكي، مايكل (11 مارس 2015). "postcss/postcss-cli: واجهة سطر أوامر لـ postcss" . جيت هاب . تم الاسترجاع في 19 مارس 2021 .
  12. نيميلا، ماتياس (23-09-2016). "تشغيل postcss في المتصفح · المشكلة رقم 830 · postcss/postcss" . جيت هاب . تم الاطلاع عليه بتاريخ 19-03-2021 .
  13. باول، أندرو (26 يناير 2016). "shellscape/postcss-less: صيغة PostCSS لتحليل LESS" . جيت هاب . تم الاسترجاع في 19 مارس 2021 .
  14. سيتنيك، أندرو (9 أغسطس 2015). "postcss/postcss-scss: محلل SCSS لـ PostCSS" . جيت هاب . تم الاسترجاع في 19 مارس 2021 .
  15. سيتنيك، أندرو (2016-01-04). "postcss/sugarss: بناء جملة CSS قائم على المسافة البادئة لـ PostCSS" . جيت هاب . تم الاسترجاع في 2021-03-20 .
  16. "postcss/autoprefixer: تحليل CSS وإضافة بادئات البائعين إلى القواعد بواسطة Can I Use" . GitHub . تم الاسترجاع في 19 مارس 2021 .
  17. "css-modules/css-modules: توثيق حول css-modules" . GitHub . تم الاطلاع عليه بتاريخ 19-03-2021 .
  18. "css-loader/package.json at 5a003e00645d2ed0b3e759db06f58a08fbdd6745 · webpack-contrib/css-loader" . GitHub . 2016-08-15 . تم الاطلاع عليه بتاريخ 2021-03-19 .
  19. "stylelint/stylelint" . GitHub . تم الاسترجاع في 19-03-2021 .
  20. "morishitter/stylefmt: stylefmt هي أداة تقوم بتنسيق أوراق الأنماط تلقائيًا" . GitHub . تم الاطلاع عليه بتاريخ 19-03-2021 .
  21. "jonathantneal/precss: استخدم ترميزًا مشابهًا لـ Sass في CSS الخاص بك" . GitHub . تم الاسترجاع في 19 مارس 2021 .
  22. "csstools/postcss-preset-env: تحويل CSS الحديث إلى شيء تفهمه المتصفحات" . GitHub . تم الاسترجاع في 19 مارس 2021 .
  23. "cssnano/cssnano: أداة تصغير معيارية، مبنية على نظام PostCSS البيئي" . GitHub . تم الاطلاع عليه بتاريخ 19-03-2021 .
  24. "MohammadYounes/rtlcss: إطار عمل لتحويل أوراق الأنماط المتتالية (CSS) من اليسار إلى اليمين (LTR) إلى اليمين إلى اليسار (RTL)" . GitHub . تم الاطلاع عليه بتاريخ 19 مارس 2021 .
  25. "borodean/postcss-assets: مدير أصول لـ PostCSS" . GitHub . تم الاسترجاع في 19 مارس 2021 .
  26. "TrySound/postcss-inline-svg: إضافة PostCSS للإشارة إلى ملف SVG والتحكم في خصائصه باستخدام صيغة CSS" . GitHub . تم الاطلاع عليه بتاريخ 19 مارس 2021 .
  27. "2createStudio/postcss-sprites: إنشاء صور مجمعة من أوراق الأنماط" . GitHub . تم الاسترجاع في 19-03-2021 .
  28. هولواي تشوك، تي جيه (2012-09-01). "التعديل الأولي · reworkcss/rework@0a7be25" . جيت هاب . تم الاسترجاع في 2019-07-21 .
  29. هولواي تشوك، تي جيه (28 فبراير 2013). "معالجة CSS المعيارية مع إعادة العمل - تي جيه هولواي تشوك" . تمبلر . مؤرشف من الأصل في 18 سبتمبر 2014. تم الاسترجاع في 18 سبتمبر 2014 .
  30. سيتنيك، أندريه (14 مارس 2013). "التعديل الأولي · postcss/autoprefixer@d36346e" . جيت هاب . تم الاطلاع عليه بتاريخ 21 يوليو 2019 .
  31. سيتنيك، أندريه (28 مارس 2013). "إعادة تسمية المشروع إلى autoprefixer · postcss/autoprefixer@419a77d" . جيت هاب . تم الاسترجاع في 21 يوليو 2019 .
  32. غالاغر، نيكولاس (2014-06-04). "تسهيل احتياجات إضافة البادئات التلقائية · المشكلة رقم 20 · reworkcss/css" . جيت هاب . تم الاسترجاع في 2019-07-21 .
  33. سيتنيك، أندريه (2013-09-07). "تهيئة المشروع · postcss/postcss@2d96cea" . جيت هاب . تم الاسترجاع في 2019-07-21 .
  34. سيتنيك، أندريه (2015-09-07). "الذكرى السنوية الثانية لـ PostCSS - مدونة فريق المريخيين الأشرار" . مدونة فريق المريخيين الأشرار . تم الاطلاع عليه بتاريخ 21 يوليو 2019 .
  35. ^ روب ، ويرزبوفسكي (2013/12/14). "الالتزام الأولي · robwierzbowski/grunt-pixrem@0f7b662" . جيثب . تم الاسترجاع 2019-07-21 .
  36. [ سيتنيك، أندريه (21-12-2013). "الإصدار 1.0 "Plus ultra" · postcss/autoprefixer" . جيت هاب . تم الاسترجاع في 20-07-2019 .
  37. تيساتر، ماركوس (31 ديسمبر 2015). "نموذج أولي · العدد 4 · postcss/postcss.org" . جيت هاب . تم الاطلاع عليه بتاريخ 21 يوليو 2019 .
  38. @PostCSS (2015-08-14). "شعار PostCSS هو رمز كيميائي لحجر الفلاسفة، الذي يمكنه تحويل المعادن إلى ذهب" ( تغريدة ) - عبر تويتر .
  39. @Autoprefixer (2013-12-17). "جميع أسماء رموز إصدارات PostCSS مأخوذة من قائمة الشياطين في كتاب الخيمياء "Lemegeton Clavicula Salomonis"( تغريدة ) عبر تويتر .​
  40. مارونيتش، ماتيا (2014-09-07). "المعالجة المسبقة مقابل المعالجة اللاحقة لـ CSS | مدونة سيلفينون" . مدونة سيلفينون . مؤرشف من الأصل في 2017-11-09 . تم الاسترجاع في 2017-11-09 .
  41. مشكلة المعالجة المسبقة بناءً على المواصفات المستقبلية
  42. @PostCSS (28-07-2015). "حان الوقت للاعتراف بأخطائي. مصطلح "المعالج اللاحق" كان سيئًا. توقف فريق PostCSS عن استخدامه" ( تغريدة ) عبر تويتر .