diff --git a/.eslintrc.cjs b/.eslintrc.cjs index e829eaa1fa..51cc6e8330 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -5,6 +5,7 @@ module.exports = { 'eslint:recommended', 'plugin:import/typescript', 'plugin:compat/recommended', + 'plugin:tailwindcss/recommended', ], env: { @@ -61,6 +62,9 @@ module.exports = { 'URL', // core-js 'URLSearchParams', // core-js ], + tailwindcss: { + config: 'tailwind.config.cjs', + }, }, rules: { @@ -235,18 +239,7 @@ module.exports = { }, ], 'import/newline-after-import': 'error', - 'import/no-extraneous-dependencies': [ - 'error', - // { - // devDependencies: [ - // 'webpack/**', - // 'app/soapbox/test_setup.js', - // 'app/soapbox/test_helpers.js', - // 'app/**/__tests__/**', - // 'app/**/__mocks__/**', - // ], - // }, - ], + 'import/no-extraneous-dependencies': 'error', 'import/no-unresolved': 'error', 'import/no-webpack-loader-syntax': 'error', 'import/order': [ @@ -271,6 +264,9 @@ module.exports = { 'promise/catch-or-return': 'error', 'react-hooks/rules-of-hooks': 'error', + + 'tailwindcss/classnames-order': 'error', + 'tailwindcss/migration-from-tailwind-2': 'error', }, overrides: [ { diff --git a/package.json b/package.json index 65767268a8..85360273c6 100644 --- a/package.json +++ b/package.json @@ -217,6 +217,7 @@ "eslint-plugin-promise": "^6.0.0", "eslint-plugin-react": "^7.25.1", "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-tailwindcss": "^3.8.3", "fake-indexeddb": "^4.0.0", "husky": "^8.0.0", "jest": "^29.0.0", diff --git a/yarn.lock b/yarn.lock index dfea2aa8a4..e04a0fbca6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5461,6 +5461,14 @@ eslint-plugin-react@^7.25.1: resolve "^2.0.0-next.3" string.prototype.matchall "^4.0.5" +eslint-plugin-tailwindcss@^3.8.3: + version "3.8.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.8.3.tgz#26dfa15fec45a94ddec99e44b1f25161a3477cbd" + integrity sha512-wfzfCmc9yONNW+TqfR+QWZ+syFPQ8zMOrIGx500lS4XITEm0HJYGyKh1sC1tQ9+Wmt58bnHzW3Yc31vy5RlJww== + dependencies: + fast-glob "^3.2.5" + postcss "^8.4.4" + eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -5736,7 +5744,7 @@ fast-glob@^3.1.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.2.11, fast-glob@^3.2.12: +fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.5: version "3.2.12" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== @@ -9163,6 +9171,15 @@ postcss@^8.4.19: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.4: + version "8.4.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"