@alexlit/config-prettier 16.6.3 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,14 +8,26 @@ npm i @alexlit/config-prettier -D
8
8
 
9
9
  ## Connection
10
10
 
11
- ```js
12
- // prettier.config.js
13
- import config from '@alexlit/config-prettier';
11
+ - Default
12
+ ([see plugins enabled by default](https://github.com/alex-lit/lint-kit/blob/master/packages/config-prettier/index.js#L5))
14
13
 
15
- export default {
16
- ...config,
14
+ ```js
15
+ // prettier.config.js
16
+ import { createConfig } from '@alexlit/config-prettier';
17
17
 
18
- // if additional plugins needed
19
- plugins: [...config.plugins, 'your-favorite-plugin'],
20
- };
21
- ```
18
+ export default createConfig();
19
+ ```
20
+
21
+ - Custom
22
+
23
+ ```js
24
+ // prettier.config.js
25
+ import { createConfig } from '@alexlit/config-prettier';
26
+
27
+ export default createConfig({
28
+ php: true,
29
+ ruby: true,
30
+ sql: false,
31
+ tailwindcss: false,
32
+ });
33
+ ```
package/index.js CHANGED
@@ -1,38 +1,97 @@
1
- /* eslint-disable spellcheck/spell-checker, import/extensions */
2
- import jsdoc from './plugins/jsdoc.js';
3
- import pug from './plugins/pug.js';
4
- import sortJson from './plugins/sort-json.js';
5
- import xml from './plugins/xml.js';
6
-
7
- export default {
8
- endOfLine: 'lf',
9
-
10
- plugins: [
11
- '@prettier/plugin-php',
12
- '@prettier/plugin-pug',
13
- '@prettier/plugin-ruby',
14
- '@prettier/plugin-xml',
15
-
16
- 'prettier-plugin-jsdoc',
17
- 'prettier-plugin-packagejson',
18
- 'prettier-plugin-sh',
19
- 'prettier-plugin-solidity',
20
- 'prettier-plugin-sort-json',
21
- 'prettier-plugin-sql',
22
- // 'prettier-plugin-svelte',
23
- // 'prettier-plugin-tailwindcss',
24
- ],
25
-
26
- proseWrap: 'always',
27
- singleQuote: true,
28
- tabWidth: 2,
29
- trailingComma: 'all',
30
- vueIndentScriptAndStyle: true,
31
-
32
- ...jsdoc,
33
- ...pug,
34
- ...sortJson,
35
- // ...svelte,
36
- // ...tailwindcss,
37
- ...xml,
1
+ /* eslint-disable no-loops/no-loops, no-restricted-syntax, no-await-in-loop */
2
+
3
+ import { omit } from 'radash';
4
+
5
+ const PLUGINS = {
6
+ /** @see [prettier-plugin-jsdoc](https://github.com/hosseinmd/prettier-plugin-jsdoc) */
7
+ jsdoc: true,
8
+
9
+ /** @see [prettier-plugin-packagejson](https://github.com/matzkoh/prettier-plugin-packagejson) */
10
+ packagejson: true,
11
+
12
+ /** @see [plugin-php](https://github.com/prettier/plugin-php) */
13
+ php: false,
14
+
15
+ /** @see [plugin-pug](https://github.com/prettier/plugin-pug) */
16
+ pug: true,
17
+
18
+ /** @see [plugin-ruby](https://github.com/prettier/plugin-ruby) */
19
+ ruby: false,
20
+
21
+ /** @see [prettier-plugin-sh](https://github.com/astorije/prettier-plugin-sh) */
22
+ sh: true,
23
+
24
+ /** @see [prettier-plugin-solidity](https://github.com/prettier-solidity/prettier-plugin-solidity) */
25
+ solidity: true,
26
+
27
+ /** @see [prettier-plugin-sort-json](https://github.com/Gudahtt/prettier-plugin-sort-json) */
28
+ 'sort-json': true,
29
+
30
+ /** @see [prettier-plugin-sql](https://github.com/un-ts/prettier/tree/master/packages/sql) */
31
+ sql: false,
32
+
33
+ /** @see [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) */
34
+ svelte: false,
35
+
36
+ /** @see [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) */
37
+ tailwindcss: false,
38
+
39
+ /** @see [plugin-xml](https://github.com/prettier/plugin-xml) */
40
+ xml: true,
41
+ };
42
+
43
+ /**
44
+ * Create plugins config list
45
+ *
46
+ * @param {PLUGINS} plugins Enabled/disabled plugins list
47
+ *
48
+ * @returns {import('prettier').Config} Prettier configuration
49
+ */
50
+ const createPluginsConfig = async (plugins = {}) => {
51
+ let pluginsConfig = { plugins: [] };
52
+
53
+ const pluginEntries = Object.entries({ ...PLUGINS, ...plugins });
54
+
55
+ for (const [name, isActive] of pluginEntries) {
56
+ if (isActive) {
57
+ const { default: config } = await import(
58
+ `@alexlit/config-prettier/plugins/${name}.js`
59
+ );
60
+
61
+ if (config.plugins?.length > 0) {
62
+ pluginsConfig.plugins.push(...config.plugins);
63
+ }
64
+
65
+ pluginsConfig = { ...pluginsConfig, ...omit(config, ['plugins']) };
66
+ }
67
+ }
68
+
69
+ return pluginsConfig;
70
+ };
71
+
72
+ /**
73
+ * Create prettier config
74
+ *
75
+ * @param {PLUGINS} plugins
76
+ * @param {import('prettier').Config} options Prettier options
77
+ *
78
+ * @returns {import('prettier').Config} Prettier configuration
79
+ */
80
+ export const createConfig = async (plugins = {}, options = {}) => {
81
+ const pluginsConfig = await createPluginsConfig(plugins);
82
+
83
+ return {
84
+ endOfLine: 'lf',
85
+
86
+ plugins: [...pluginsConfig.plugins, ...(options.plugins ?? [])],
87
+
88
+ proseWrap: 'always',
89
+ singleQuote: true,
90
+ tabWidth: 2,
91
+ trailingComma: 'all',
92
+ vueIndentScriptAndStyle: true,
93
+
94
+ ...omit(pluginsConfig, ['plugins']),
95
+ ...omit(options, ['plugins']),
96
+ };
38
97
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexlit/config-prettier",
3
- "version": "16.6.3",
3
+ "version": "17.0.0",
4
4
  "private": false,
5
5
  "description": "prettier config",
6
6
  "keywords": [
@@ -45,7 +45,8 @@
45
45
  "prettier-plugin-sort-json": "^3.1.0",
46
46
  "prettier-plugin-sql": "^0.18.0",
47
47
  "prettier-plugin-svelte": "^3.2.2",
48
- "prettier-plugin-tailwindcss": "^0.5.11"
48
+ "prettier-plugin-tailwindcss": "^0.5.12",
49
+ "radash": "^12.1.0"
49
50
  },
50
51
  "engines": {
51
52
  "node": ">=18.12.0"
package/plugins/jsdoc.js CHANGED
@@ -1,6 +1,6 @@
1
- /** @see [prettier-plugin-jsdoc](https://github.com/hosseinmd/prettier-plugin-jsdoc) */
2
1
  export default {
3
2
  jsdocCommentLineStrategy: 'singleLine',
4
3
  jsdocSeparateReturnsFromParam: true,
5
4
  jsdocSeparateTagGroups: true,
5
+ plugins: ['prettier-plugin-jsdoc'],
6
6
  };
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['prettier-plugin-packagejson'],
3
+ };
package/plugins/php.js ADDED
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['@prettier/plugin-php'],
3
+ };
package/plugins/pug.js CHANGED
@@ -1,5 +1,6 @@
1
- /** @see [plugin-pug](https://github.com/prettier/plugin-pug) */
2
1
  export default {
2
+ plugins: ['@prettier/plugin-pug'],
3
+
3
4
  pugCommentPreserveSpaces: 'trim-all',
4
5
  pugSingleQuote: false,
5
6
  pugSortAttributes: 'asc',
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['@prettier/plugin-ruby'],
3
+ };
package/plugins/sh.js ADDED
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['prettier-plugin-sh'],
3
+ };
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['prettier-plugin-solidity'],
3
+ };
@@ -1,4 +1,5 @@
1
- /** @see [prettier-plugin-sort-json]https://github.com/Gudahtt/prettier-plugin-sort-json) */
2
1
  export default {
3
2
  jsonRecursiveSort: true,
3
+
4
+ plugins: ['prettier-plugin-sort-json'],
4
5
  };
package/plugins/sql.js ADDED
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['prettier-plugin-sql'],
3
+ };
package/plugins/svelte.js CHANGED
@@ -1,5 +1,6 @@
1
- /** @see [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) */
2
1
  export default {
2
+ plugins: ['prettier-plugin-svelte'],
3
+
3
4
  svelteAllowShorthand: false,
4
5
  svelteIndentScriptAndStyle: true,
5
6
  svelteSortOrder: 'options-scripts-markup-styles',
@@ -1,4 +1,5 @@
1
- /** @see [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) */
2
1
  export default {
2
+ plugins: ['prettier-plugin-tailwindcss'],
3
+
3
4
  tailwindFunctions: ['tw'],
4
5
  };
package/plugins/xml.js CHANGED
@@ -1,4 +1,5 @@
1
- /** @see [plugin-xml](https://github.com/prettier/plugin-xml) */
2
1
  export default {
2
+ plugins: ['@prettier/plugin-xml'],
3
+
3
4
  xmlWhitespaceSensitivity: 'ignore',
4
5
  };