tailwindCSS === 使用插件自動類名排序

目錄

?類如何排序

自定義

實戰應用

.prettierrc

package?

.eslintrc?


人們一直在討論在 Tailwind 項目中對實用程序類進行排序的最佳方法。今天,我們很高興地宣布,隨著我們官方??prettier-plugin-tailwindcss 的發布,您終于可以不用為此擔心了。

此插件會掃描您的模板,查找包含 Tailwind CSS 類的 class 屬性,然后按照我們推薦的類排序動對這些類進行排序。

<!-- Before -->
<button class="text-white px-4 sm:px-8 py-2 sm:py-3 bg-sky-700 hover:bg-sky-800">...</button>
<!-- After -->
<button class="bg-sky-700 px-4 py-2 text-white hover:bg-sky-800 sm:px-8 sm:py-3">...</button>

它可以與自定義 Tailwind 配置無縫協作,并且因為它只是一個prettier插件,所以它可以在任何 Prettier 可以工作的地方工作——包括每個流行的編輯器和 IDE,當然也可以在命令行中使用。

要開始使用,請將?prettier-plugin-tailwindcss?安裝為開發依賴項

npm install -D prettier prettier-plugin-tailwindcss

然后將插件添加到您的?.prettierrc 中?

配置文件 · Prettier 中文

{"plugins": ["prettier-plugin-tailwindcss"]
}

您還可以通過將 --plugin 標志與 Prettier CLI 一起使用,或者通過將 plugins 選項與 Prettier API 一起使用來加載插件。

插件是向 Prettier 添加新語言或格式規則的方法。Prettier 自身對所有語言的實現都使用插件 API 來表達。核心prettier包內置了 JavaScript 和其他 Web 語言。如需添加其他語言,則需要安裝插件

您可以使用以下方式加載插件:

{"plugins": ["prettier-plugin-foo"]
}

提供的字符串plugins最終傳遞給import()表達式,此您可以提供模塊/包名稱、路徑或任何其他import()內容。

?類如何排序

從本質上講,此插件所做的只是按照 Tailwind 在 CSS 中對其類進行排序的相同順序來組織您的類。

這意味著基礎層中的任何類都將首先排序,然后是組件層中的類,最后是實用程序層中的類。

<!-- `container` is a component so it comes first -->
<div class="container mx-auto px-6"><!-- ... -->
</div>

實用程序本身的排序順序也與我們在 CSS 中對它們進行排序的順序相同,這意味著任何覆蓋其他類的類總是出現在類列表的后面

<div class="pt-2 p-4">
<div class="p-4 pt-2"><!-- ... --></div>
</div>

不同實用程序的實際順序大致基于盒模型,并嘗試將影響布局的高影響類放在開頭,將裝飾類放在結尾,同時還嘗試將相關的實用程序放在一起

<div class="text-gray-700 shadow-md p-3 border-gray-300 ml-4 h-24 flex border-2">
<div class="ml-4 flex h-24 border-2 border-gray-300 p-3 text-gray-700 shadow-md"><!-- ... --></div>
</div>

像?hover:?和?focus:?這樣的修飾符被分組在一起,并在任何普通實用程序之后進行排序

<div class="hover:opacity-75 opacity-50 hover:scale-150 scale-125">
<div class="scale-125 opacity-50 hover:scale-150 hover:opacity-75"><!-- ... --></div>
</div>

像?md:?和?lg:?這樣的響應式修飾符被分組在最后,并按照它們在您的主題中配置的順序排序——默認情況下是從最小到最大

<div class="lg:grid-cols-4 grid sm:grid-cols-3 grid-cols-2">
<div class="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4"><!-- ... --></div>
</div>

任何不來自 Tailwind 插件的自定義類(例如用于定位第三方庫的類)始終排序在最前面,因此很容易看出元素何時正在使用它們

<div class="p-3 shadow-xl select2-dropdown">
<div class="select2-dropdown p-3 shadow-xl"><!-- ... --></div>
</div>

自定義

我們認為,在保持主觀性和在自定義方面提供較少選擇時,Prettier 做對了——歸根結底,對您的類進行排序的最大好處是,您可以減少一件與團隊爭論的事情。 我們非常努力地提出了一個易于理解且能盡快傳達最重要信息的排序順序。 該插件將尊重您的 tailwind.config.js 文件,并與您安裝的任何 Tailwind 插件一起工作,但是無法更改排序順序。就像 Prettier 一樣,我們認為自動格式化的好處將很快超過您擁有的任何樣式偏好,并且您會很快習慣它。

https://prettier.io/docs/option-philosophy.html

然而,該停下來的時候到了。如今 Prettier 已經足夠成熟,我們看到它被如此多的組織和項目采用,研究階段已經結束。我們有充分的信心得出結論,Prettier 已經達到了一個應該“凍結”選項的階段。選項請求將不再被接受。我們感謝所有參與這段艱難旅程的人。

實戰應用

作者在使用的時候因為使用的?prettier,?eslint-plugin-prettier 這兩個第三方插件的版本太低導致各種不生效 所以我把現在可以運行的版本貼出來供參考
如果遇到問題可以先更新版本 然后在參考文檔看看是否有最新方案

.prettierrc

{"plugins": ["prettier-plugin-tailwindcss"],"printWidth": 80,"tabWidth": 2,"useTabs": false,"singleQuote": true,"semi": false,"trailingComma": "none","bracketSpacing": true
}

package?

{"private": true,"version": "1.0.0","description": "通知H5 MonoRepo項目","main": "index.js","type": "module","scripts": {"dev": "turbo run dev","build": "turbo run build","prepare": "husky install"},"keywords": [],"author": "","license": "ISC","devDependencies": {"@types/node": "^18.11.9","@typescript-eslint/eslint-plugin": "^5.42.0","@typescript-eslint/parser": "^5.42.0","eslint": "^8.26.0","eslint-config-prettier": "^8.5.0","eslint-plugin-prettier": "^5.5.1","eslint-plugin-vue": "^9.7.0","husky": "^8.0.1","lint-staged": "^13.0.3","prettier": "^3.6.2","prettier-plugin-tailwindcss": "^0.6.14","turbo": "^2.5.4","typescript": "^4.8.4"},"lint-staged": {"*.{js,ts,vue,jsx,tsx,json}": "eslint --cache --fix"},"packageManager": "pnpm@9.0.0"
}

.eslintrc?

  {"env": {"browser": true,"es2021": true,"node": true},"extends": ["eslint:recommended","plugin:vue/vue3-essential","plugin:@typescript-eslint/recommended","plugin:prettier/recommended"],"overrides": [],"parser": "vue-eslint-parser","parserOptions": {"ecmaVersion": "latest","parser": "@typescript-eslint/parser","sourceType": "module"},"plugins": ["vue","@typescript-eslint"],"rules": {"vue/multi-word-component-names": "off","@typescript-eslint/no-this-alias": ["off"]},"globals": {"uni": true,"getApp": true,"Android": true}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88532.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88532.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構 —— 鍵值對 map

目錄 map的若干操作 1、emplace() 2、find(key) 3、count(key) 4、lower_bound 和 upper_bound 5、erase() 6、empty() 7、降序的map 計蒜客T3603 叫號系統 題意&#xff1a; 解題思路&#xff1a; Code: Leetcode1309 解碼字母到整數映射 題意&#xff1a; 解題…

C++ 性能優化指南

C 性能優化指南&#xff08;針對 GCC 編譯器&#xff0c;面向高級工程師面試&#xff09; 代碼優化面試常問點&#xff1a; 如何避免不必要的對象拷貝&#xff1f;為什么要用引用或 std::move&#xff1f;虛函數調用有什么性能開銷&#xff1f;原理解釋&#xff1a; 傳遞對象時…

拼數(字符串排序)

題目描述設有 n 個正整數 a1?…an?&#xff0c;將它們聯接成一排&#xff0c;相鄰數字首尾相接&#xff0c;組成一個最大的整數。輸入格式第一行有一個整數&#xff0c;表示數字個數 n。第二行有 n 個整數&#xff0c;表示給出的 n 個整數 ai?。輸出格式一個正整數&#xff…

【MySQL】函數學習-字符串函數

一、MySQL字符串函數基礎回顧 在MySQL中&#xff0c;字符串函數用于處理文本數據&#xff0c;常見場景包括數據拼接、格式轉換、清洗等。以下是核心函數速覽&#xff1a;函數名作用說明基礎示例&#xff08;獨立運行&#xff09;CONCAT(s1,s2)拼接多個字符串SELECT CONCAT(heel…

AI不是“心智的蒸汽機“:重新理解人工智能的本質

當我們談論人工智能時&#xff0c;最常聽到的比喻是"心智的蒸汽機"——一個能夠自動化認知任務的強大工具。但這個比喻可能從根本上誤導了我們對AI真正潛力的理解。 最近&#xff0c;來自科羅拉多大學丹佛分校和肯尼索州立大學的研究團隊發表了一篇論文[1]&#xff0…

免費的AI Logo工具生成的Logo質量怎么樣?我對比了7個AI Logo生成器,設計必備

你嘗試過用 AI 生成 Logo 嗎&#xff1f;在 AI 巨火的今天&#xff0c;什么事情都可以嘗試用 AI 去做。在品牌設計上也是如此&#xff0c;用 AI 做品牌設計、用 AI 做電商海報、用 AI 做包裝設計等等。不知道你用過哪些 AI 工具&#xff0c;哪些是你覺得好用的。今天我們就來研…

計算機基礎:內存模型

專欄導航 上一篇&#xff1a;WIndows 編程輔助技能&#xff1a;格式工廠的使用 回到目錄 下一篇&#xff1a;MFC 第一章概述 本節前言 本來呢&#xff0c;沒想著在單獨的課節中講解內存模型。但是呢&#xff0c;在我寫過的一些個課節中&#xff0c;我發現&#xff0c;內存…

Sigma-Aldrich 細胞培養實驗方案 | 通過Hoechst DNA染色檢測細胞的支原體污染

目標DNA染色&#xff08;如間接Hoechst染色技術&#xff09;一種快速的方法&#xff0c;其可在72小時內獲得結果&#xff0c;這相較于通過培養分離檢測支原體所需的4周時間相比是更加有利的。用DNA染色劑對細胞系進行直接染色可在24小時內獲得結果&#xff0c;但會大大降低靈敏…

需求跟蹤深度解析:架構師視角下的全鏈路追溯體系

需求跟蹤&#xff08;Requirements Traceability&#xff09;是確保軟件系統從業務目標到代碼實現全程可追溯的核心實踐&#xff0c;尤其在安全關鍵系統&#xff08;如航空、醫療&#xff09;中具有強制性要求。一、需求跟蹤的四大核心價值變更影響分析 精確評估需求變更波及范…

《棒球規則介紹》領隊和主教練誰說了算·棒球1號位

Baseball 101&#xff5c;GM vs Manager 到底誰是球隊話事人&#xff1f; ??權力金字塔&#xff1a;誰說了算&#xff1f;General Manager&#xff08;總經理/GM&#xff09;球隊建筑師&#xff1a;負責選秀&#xff08;Draft&#xff09;、交易球員&#xff08;Trade&#x…

電力自動化的通信中樞,為何工業交換機越來越重要?

在“新能源數字化”雙輪驅動下&#xff0c;電力行業正經歷深刻變革&#xff0c;傳統變電站也迎來了向智能化、自動化加速轉型的時代。作為連接站內各級系統與裝置的數據“中樞”&#xff0c;工業以太網交換機已成為現代變電站自動化系統中不可或缺的核心設備。在這場深度重構的…

【Linux倉庫】命令行參數與環境變量【進程·伍】

&#x1f31f; 各位看官好&#xff0c;我是egoist2023&#xff01; &#x1f30d; Linux Linux is not Unix &#xff01; &#x1f680; 今天來學習命令行參數與環境變量的相關知識。 &#x1f44d; 如果覺得這篇文章有幫助&#xff0c;歡迎您一鍵三連&#xff0c;分享給更多…

R 數據框:深入解析及其在數據分析中的應用

R 數據框:深入解析及其在數據分析中的應用 引言 R語言作為一種強大的統計計算和圖形工具,在數據分析領域有著廣泛的應用。數據框(DataFrame)是R語言中處理數據的一種重要結構,它類似于其他編程語言中的表格或關系數據庫中的表。本文將深入解析R數據框的概念、特點、創建…

機器學習數據集劃分全指南:train_test_split詳解與實踐

目錄 一、為什么需要劃分數據集&#xff1f; 二、train_test_split基礎用法 2.1 最簡單的劃分方式 2.2 參數說明 三、實際應用案例&#xff1a;Iris數據集劃分 四、高級技巧與注意事項 4.1 分層抽樣&#xff08;Stratified Sampling&#xff09; 4.2 時間序列數據劃分 …

python-77-數據序列化框架Avro數據格式編碼和解析

文章目錄 1 avro簡介1.1 關鍵特點1.2 無需標記2 使用步驟2.1 定義Avro模式2.2 編碼Avro數據2.3 解析Avro數據3 DataFileWriter和DataFileReader3.1 寫入DataFileWriter3.2 讀取DataFileReader3 文件中存儲16進制字符串3.1 十六進制字符串3.2 代碼示例4 接收kafka中的avro數據5 …

IAR攜手矽力杰與普華基礎軟件,共推RISC-V車規芯片高安全應用落地

芯片 基礎軟件 開發工具三方協同&#xff0c;賦能國產汽車電子加速自主演進 在“軟件定義汽車”持續重塑產業格局的當下&#xff0c;構建安全、高效、可擴展的本土汽車電子生態已成為行業共識。 IAR嵌入式開發解決方案現已全面支持矽力杰SA32B系列和即將量產的SA32D系列車規…

Vscode——報錯,加載 Web 視圖時出錯: Error: Could not register service worker

Vscode——報錯完整信息 加載 Web 視圖時出錯: Error: Could not register service worker: InvalidStateError: Failed to register a ServiceWorker: The document is in an invalid state… 很有意思下班前還是好的&#xff0c;上班發現下載的Ai code 無法正常使用了 解決…

Java-Collections、Map

目錄 1.可變參數 2.Collections工具類 不同集合類型的排序方法比較 3.斗地主游戲 4.Map集合 4.1 Map集合概述 4.2 Map集合的常用方法 4.3 Map集合的遍歷方式 4.4 Map集合案例—統計投票人數 4.5 HashMap 4.6 LinkedHashMap 4.7 TreeMap 5.集合的嵌套 1.可變參數 import …

開源界迎來重磅核彈!月之暗面開源了自家最新模型 K2

1. 模型簡介 Kimi K2 是一款尖端專家混合&#xff08;MoE&#xff09;語言模型&#xff0c;激活參數量達320億&#xff0c;總參數量突破1萬億。該模型采用Muon優化器訓練&#xff0c;在前沿知識、推理和編程任務中展現出卓越性能&#xff0c;同時針對智能體能力進行了精細化優…

Grok-4 發布會圖文總結

文章目錄00:00 - Grok-4&#xff1a;以“全球最智能 AI”之名突破性登場06:41 - 推理能力的大幅飛躍&#xff1a;100 倍訓練量鑄就的“博士級”大腦13:25 - 工具使用能力的革新&#xff1a;從“原始”到深度整合20:06 - 直面強化學習的挑戰與 AI 的終極測試26:45 - 應用演示&am…