diff --git a/CHANGELOG.md b/CHANGELOG.md index ab534bd5..bc2daef7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -- Nothing yet! +### Added + +- Add support for `prettier-plugin-sort-imports` ([#241](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/pull/241)) ## [0.5.11] - 2024-01-05 diff --git a/README.md b/README.md index 69bc4653..57446496 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,7 @@ This plugin uses Prettier APIs that can only be used by one plugin at a time, ma - `prettier-plugin-organize-imports` - `prettier-plugin-style-order` - `prettier-plugin-svelte` +- `prettier-plugin-sort-imports` One limitation with this approach is that `prettier-plugin-tailwindcss` *must* be loaded last. diff --git a/package-lock.json b/package-lock.json index cbc9f06e..4ec3659e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "license-checker": "^25.0.1", "line-column": "^1.0.2", "marko": "^5.31.18", - "prettier": "^3.1", + "prettier": "^3.2", "prettier-plugin-astro": "^0.12.2", "prettier-plugin-css-order": "^2.0.0", "prettier-plugin-import-sort": "^0.0.7", @@ -31,6 +31,7 @@ "prettier-plugin-marko": "^3.1.1", "prettier-plugin-organize-attributes": "^1.0.0", "prettier-plugin-organize-imports": "^3.2.4", + "prettier-plugin-sort-imports": "^1.8.1", "prettier-plugin-style-order": "^0.2.2", "prettier-plugin-svelte": "^3.1.2", "recast": "0.20.5", @@ -55,6 +56,7 @@ "prettier-plugin-marko": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", "prettier-plugin-style-order": "*", "prettier-plugin-svelte": "*" }, @@ -92,6 +94,9 @@ "prettier-plugin-organize-imports": { "optional": true }, + "prettier-plugin-sort-imports": { + "optional": true + }, "prettier-plugin-style-order": { "optional": true }, @@ -7757,9 +7762,9 @@ "dev": true }, "node_modules/prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", - "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.1.tgz", + "integrity": "sha512-qSUWshj1IobVbKc226Gw2pync27t0Kf0EdufZa9j7uBSJay1CC+B3K5lAAZoqgX3ASiKuWsk6OmzKRetXNObWg==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -7876,6 +7881,18 @@ } } }, + "node_modules/prettier-plugin-sort-imports": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-1.8.1.tgz", + "integrity": "sha512-0oB5wKhidbpfbEjBOvLieuwOlVmA75mw1yoKdQHZeV8qGaQpckiedi08+Tbakp1JzulWWF09dV19RGl0OyOLbg==", + "dev": true, + "dependencies": { + "prettier": "^3.1.1" + }, + "peerDependencies": { + "typescript": ">4.0.0" + } + }, "node_modules/prettier-plugin-style-order": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/prettier-plugin-style-order/-/prettier-plugin-style-order-0.2.2.tgz", diff --git a/package.json b/package.json index b58e7c75..46779e80 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "license-checker": "^25.0.1", "line-column": "^1.0.2", "marko": "^5.31.18", - "prettier": "^3.1", + "prettier": "^3.2", "prettier-plugin-astro": "^0.12.2", "prettier-plugin-css-order": "^2.0.0", "prettier-plugin-import-sort": "^0.0.7", @@ -53,6 +53,7 @@ "prettier-plugin-marko": "^3.1.1", "prettier-plugin-organize-attributes": "^1.0.0", "prettier-plugin-organize-imports": "^3.2.4", + "prettier-plugin-sort-imports": "^1.8.1", "prettier-plugin-style-order": "^0.2.2", "prettier-plugin-svelte": "^3.1.2", "recast": "0.20.5", @@ -74,6 +75,7 @@ "prettier-plugin-marko": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", "prettier-plugin-style-order": "*", "prettier-plugin-svelte": "*" }, @@ -111,6 +113,9 @@ "prettier-plugin-organize-imports": { "optional": true }, + "prettier-plugin-sort-imports": { + "optional": true + }, "prettier-plugin-style-order": { "optional": true }, diff --git a/src/plugins.js b/src/plugins.js index 6a73199b..2075a31b 100644 --- a/src/plugins.js +++ b/src/plugins.js @@ -171,6 +171,7 @@ async function loadCompatiblePlugins() { 'prettier-plugin-jsdoc', 'prettier-plugin-organize-attributes', 'prettier-plugin-style-order', + 'prettier-plugin-sort-imports', ] // Load all the available compatible plugins up front diff --git a/tests/plugins.test.js b/tests/plugins.test.js index 94a01657..f74506b0 100644 --- a/tests/plugins.test.js +++ b/tests/plugins.test.js @@ -63,6 +63,35 @@ let tests = [ ], }, }, + { + versions: [3], + plugins: ['prettier-plugin-sort-imports'], + options: { + sortingMethod: 'alphabetical', + }, + tests: { + babel: [ + [ + `import './three'\nimport '@two/file'\nimport '@one/file'`, + `import './three'\nimport '@one/file'\nimport '@two/file'`, + ], + ], + typescript: [ + [ + `import './three'\nimport '@two/file'\nimport '@one/file'`, + `import './three'\nimport '@one/file'\nimport '@two/file'`, + ], + ], + + // This plugin does not support babel-ts + 'babel-ts': [ + [ + `import './three'\nimport '@two/file'\nimport '@one/file'`, + `import './three'\nimport '@two/file'\nimport '@one/file'`, + ], + ], + }, + }, { versions: [2, 3], plugins: ['prettier-plugin-organize-imports'],