A Prettier plugin that automatically sorts import declarations in JavaScript and TypeScript files according to configurable Regular Expression patterns.
—
Specialized preprocessors for Vue Single File Components and Svelte files with framework-aware import handling that preserves component structure while sorting imports.
Preprocessor specifically designed for Vue Single File Components (.vue files).
function vuePreprocessor(code: string, options: PrettierOptions): stringParameters:
code: Vue SFC source code stringoptions: Prettier options including plugin configurationReturns: Processed Vue SFC code with sorted imports in script sections
The Vue preprocessor handles the complexity of Single File Components by:
<script> and <script setup> blocksInput:
<template>
<div>{{ message }}</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { utils } from './utils';
import { computed } from 'vue';
import axios from 'axios';
const message = ref('Hello Vue!');
</script>
<style scoped>
div { color: blue; }
</style>Output (with appropriate configuration):
<template>
<div>{{ message }}</div>
</template>
<script setup lang="ts">
import axios from 'axios';
import { computed, ref } from 'vue';
import { utils } from './utils';
const message = ref('Hello Vue!');
</script>
<style scoped>
div { color: blue; }
</style>Vue support requires the @vue/compiler-sfc peer dependency:
{
"peerDependencies": {
"@vue/compiler-sfc": "3.x"
},
"peerDependenciesMeta": {
"@vue/compiler-sfc": {
"optional": true
}
}
}Installation:
npm install --save-dev @vue/compiler-sfcPreprocessor for Svelte component files (.svelte) with dynamic parser loading.
function sveltePreprocessor(code: string, options: PrettierOptions): stringParameters:
code: Svelte component source code stringoptions: Prettier options including plugin configurationReturns: Processed Svelte component code with sorted imports in script sections
The Svelte preprocessor provides:
Input:
<script>
import { onMount } from 'svelte';
import { utils } from './utils';
import axios from 'axios';
import { writable } from 'svelte/store';
let data = writable([]);
onMount(async () => {
const response = await axios.get('/api/data');
data.set(response.data);
});
</script>
<main>
<h1>Hello Svelte!</h1>
</main>
<style>
main { padding: 1rem; }
</style>Output (with appropriate configuration):
<script>
import axios from 'axios';
import { onMount } from 'svelte';
import { writable } from 'svelte/store';
import { utils } from './utils';
let data = writable([]);
onMount(async () => {
const response = await axios.get('/api/data');
data.set(response.data);
});
</script>
<main>
<h1>Hello Svelte!</h1>
</main>
<style>
main { padding: 1rem; }
</style>function createSvelteParsers(): { parsers?: any } | {}Dynamically imports and creates Svelte parsers with graceful fallback:
prettier-plugin-svelteSvelte support requires peer dependencies:
{
"peerDependencies": {
"prettier-plugin-svelte": "3.x",
"svelte": "4.x || 5.x"
},
"peerDependenciesMeta": {
"prettier-plugin-svelte": {
"optional": true
},
"svelte": {
"optional": true
}
}
}Installation:
npm install --save-dev prettier-plugin-svelte svelteBoth framework preprocessors integrate with Prettier's parser system:
// Vue integration
parsers: {
vue: {
...htmlParsers.vue,
preprocess: vuePreprocessor,
}
}
// Svelte integration (conditional)
parsers: {
svelte: {
...svelteParsers.parsers.svelte,
preprocess: sveltePreprocessor,
}
}Framework preprocessors are automatically applied based on file extensions:
.vue extension triggers vuePreprocessor.svelte extension triggers sveltePreprocessordefaultPreprocessor skips these file typesFramework preprocessors respect all plugin configuration options:
// Works with both Vue and Svelte files
{
"importOrder": ["^svelte", "^vue", "^@/(.*)$", "^[./]"],
"importOrderSeparation": true,
"importOrderSortSpecifiers": true,
"importOrderGroupNamespaceSpecifiers": true
}Both preprocessors fully support TypeScript:
<script setup lang="ts">
import type { Component } from 'vue';
import { ref } from 'vue';
</script><script lang="ts">
import type { Writable } from 'svelte/store';
import { writable } from 'svelte/store';
</script>Svelte module script blocks are also processed:
<script context="module" lang="ts">
import { browser } from '$app/environment';
import { utils } from './utils';
export const preload = () => {
if (browser) {
return utils.loadData();
}
};
</script>
<script>
import { onMount } from 'svelte';
// Regular script content
</script>Framework preprocessors include robust error handling:
<script setup> syntax@vue/compiler-sfc versionInstall with Tessl CLI
npx tessl i tessl/npm-trivago--prettier-plugin-sort-imports