mauss
Version:
lightweight, modular, type-safe utilities
64 lines (59 loc) • 1.17 kB
JavaScript
/** @param {string} plugin */
function detect(plugin) {
try {
// out from experimental since v18.19 and v20.6
// https://nodejs.org/api/esm.html#importmetaresolvespecifier
import.meta.resolve(plugin);
return true;
} catch (error) {
return false;
}
}
const plugins = {
'sort-package-json': detect('prettier-plugin-sort-package-json'),
};
const config = [
plugins['sort-package-json'] && {
files: 'package.json',
options: {
plugins: ['prettier-plugin-sort-package-json'],
},
},
{
files: ['pnpm-lock.yaml', '.svelte-kit/**/*'],
options: {
rangeEnd: 0,
},
},
{
files: '*.md',
options: {
tabWidth: 4,
},
},
{
files: '*.svelte',
options: {
plugins: ['prettier-plugin-svelte'],
svelteSortOrder: 'options-scripts-markup-styles',
svelteStrictMode: false,
svelteAllowShorthand: true,
svelteIndentScriptAndStyle: true,
},
},
{
files: '*.y*ml',
options: {
useTabs: false,
},
},
];
export const {
printWidth = 100,
semi = true,
singleQuote = true,
tabWidth = 2,
trailingComma = 'all',
useTabs = true,
overrides = config.filter((o) => o),
} = /** @type {import('prettier').Config} */ ({});