diff --git a/package.json b/package.json index 6140d01921..d292fe69fc 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ }, "dependencies": { "@proton/eslint-config-proton": "workspace:^", + "@proton/prettier-config-proton": "workspace:^", "@proton/stylelint-config-proton": "workspace:^", "is-ci": "^4.1.0", "stylelint-config-standard-scss": "^10.0.0", diff --git a/packages/prettier-config/config.d.ts b/packages/prettier-config/config.d.ts new file mode 100644 index 0000000000..8be8636cc8 --- /dev/null +++ b/packages/prettier-config/config.d.ts @@ -0,0 +1,4 @@ +import type { Config } from 'prettier'; + +declare const config: Config; +export = config; diff --git a/packages/prettier-config/config.mjs b/packages/prettier-config/config.mjs new file mode 100644 index 0000000000..96e99e2b07 --- /dev/null +++ b/packages/prettier-config/config.mjs @@ -0,0 +1,48 @@ +export default { + printWidth: 120, + arrowParens: 'always', + singleQuote: true, + // Default in prettier 3 is 'all', but since that'd require a large migration keeping it es5 for now + trailingComma: 'es5', + tabWidth: 4, + proseWrap: 'never', + overrides: [ + { + files: '*.scss', + options: { + tabWidth: 2, + useTabs: true, + singleQuote: true, + }, + }, + { + files: '*.ts', + options: { + importOrderParserPlugins: ['typescript'], + }, + }, + { + files: '*.svg', + options: { + parser: 'html', + }, + }, + ], + importOrder: [ + '^react(.*)$', + '^react-dom(.*)$', + '^react-router-dom(.*)$', + '', + '^codemirror(?!.*\\.(?:css|scss)$).*$', + '^@proton/(?!.*\\.(?:css|scss)$).*$', + '^proton-mail(?!.*\\.(?:css|scss)$).*$', + '^[./].*(?', - '^codemirror(?!.*\\.(?:css|scss)$).*$', - '^@proton/(?!.*\\.(?:css|scss)$).*$', - '^proton-mail(?!.*\\.(?:css|scss)$).*$', - '^[./].*(?