Skip to content

Commit d192257

Browse files
authored
🎨 Reformat README (#5)
Reformats README with sentence-based line breaks. Replaces Prettier config file with `.editorconfig`. Adds early version of functional form for export alongside default export.
1 parent 160ea33 commit d192257

8 files changed

+224
-245
lines changed

.editorconfig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[*]
2+
charset = utf-8
3+
end_of_line = lf
4+
indent_size = 2
5+
# https://alexandersandberg.com/articles/default-to-tabs-instead-of-spaces-for-an-accessible-first-environment/
6+
indent_style = tab
7+
insert_final_newline = true

README.md

Lines changed: 107 additions & 154 deletions
Large diffs are not rendered by default.

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eslint-config-connorjs",
3-
"version": "1.0.0-alpha.8",
3+
"version": "1.0.0-alpha.9",
44
"description": "My (@connorjs) preferred ESLint configuration. With ESLint flat config.",
55
"keywords": [
66
"eslint",

prettier.config.cjs

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/export.js

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,32 @@ import { react } from "./react.js";
1010
*
1111
* @type {import('@typescript-eslint/utils').TSESLint.FlatConfig.ConfigFile}
1212
*/
13-
const config = [
13+
const connorjsConfig = [
1414
...javascriptAndTypescript,
1515
...react,
16-
...json,
16+
...json({ packageJson: true }),
1717
...html,
18-
...graphql,
1918
...base, // Last to apply to all file types
2019
];
2120

2221
// eslint-disable-next-line import/no-default-export -- ESLint configs use default export (community practice)
23-
export default config;
22+
export default connorjsConfig;
23+
24+
/**
25+
* Creates a custom `@connorjs` ESLint config.
26+
*
27+
* @param options - Configuration options.
28+
* @param options.html {boolean=true} - Enables HTML.
29+
* @param options.graphql {boolean=false} - Enables GraphQL.
30+
* @param options.packageJson {boolean=true} - Applies `package.json` sorting rules.
31+
*/
32+
export function createConnorjsConfig(options = {}) {
33+
return [
34+
...javascriptAndTypescript,
35+
...react,
36+
...json({ packageJson: options.packageJson ?? true }),
37+
...(options.html ?? true ? html : []),
38+
...(options.graphql ? graphql : []),
39+
...base, // Last to apply to all file types
40+
];
41+
}

src/javascript-and-typescript.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@ export const javascriptAndTypescript = tseslint.config(
6868
{
6969
/* eslint-disable unicorn/string-content -- Configuring this rule */
7070
patterns: {
71-
// The quote items can cause controversy, so I’ve
72-
// commented out by default.
71+
// The quote items can cause controversy, so I’ve commented out by default.
7372
//
7473
// '"': {
7574
// fix: false, // Should not fix quotes

src/json.js

Lines changed: 84 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -2,90 +2,95 @@ import jsoncPlugin from "eslint-plugin-jsonc";
22
import jsoncParser from "jsonc-eslint-parser";
33
import tseslint from "typescript-eslint";
44

5-
export const json = tseslint.config(
6-
{
7-
// JSON files
8-
files: [`**/*.{json,jsonc}`],
9-
ignores: [`package-lock.json`],
10-
languageOptions: {
11-
parser: jsoncParser,
5+
export function json(options = {}) {
6+
const config = tseslint.config(
7+
{
8+
// JSON files
9+
files: [`**/*.{json,jsonc}`],
10+
ignores: [`package-lock.json`],
11+
languageOptions: {
12+
parser: jsoncParser,
13+
},
14+
plugins: { jsonc: jsoncPlugin },
15+
rules: {
16+
...jsoncPlugin.configs[`recommended-with-json`].rules,
17+
...jsoncPlugin.configs.prettier.rules,
18+
"jsonc/sort-keys": `error`, // Specify per-file orders as needed (below)
19+
},
1220
},
13-
plugins: { jsonc: jsoncPlugin },
14-
rules: {
15-
...jsoncPlugin.configs[`recommended-with-json`].rules,
16-
...jsoncPlugin.configs.prettier.rules,
17-
"jsonc/sort-keys": `error`, // Specify per-file orders as needed (below)
21+
{
22+
// These allow comments (a.k.a. JSONC files)
23+
files: [
24+
`**/global.json`,
25+
`**/tsconfig*.json`,
26+
`**/turbo.json`,
27+
`**/*.jsonc`,
28+
],
29+
rules: { "jsonc/no-comments": `off` },
1830
},
19-
},
20-
{
21-
// These allow comments (a.k.a. JSONC files)
22-
files: [
23-
`**/global.json`,
24-
`**/tsconfig*.json`,
25-
`**/turbo.json`,
26-
`**/*.jsonc`,
27-
],
28-
rules: { "jsonc/no-comments": `off` },
29-
},
30-
{
31-
// Special rules for package.json
32-
files: [`**/package.json`],
33-
rules: {
34-
"jsonc/sort-keys": [
35-
`warn`, // warn because nothing is “wrong” and this config may change often
36-
{
37-
// Defines order of root properties
38-
order: [
39-
`name`,
40-
`version`,
41-
`description`,
42-
`private`,
31+
);
32+
if (options.packageJson) {
33+
config.push({
34+
// Special rules for package.json
35+
files: [`**/package.json`],
36+
rules: {
37+
"jsonc/sort-keys": [
38+
`warn`, // warn because nothing is “wrong” and this config may change often
39+
{
40+
// Defines order of root properties
41+
order: [
42+
`name`,
43+
`version`,
44+
`description`,
45+
`private`,
4346

44-
// Additional publish info
45-
`keywords`,
46-
`homepage`,
47-
`bugs`,
48-
`license`,
49-
`author`,
50-
`repository`,
51-
`publishConfig`,
52-
// End publish info
47+
// Additional publish info
48+
`keywords`,
49+
`homepage`,
50+
`bugs`,
51+
`license`,
52+
`author`,
53+
`repository`,
54+
`publishConfig`,
55+
// End publish info
5356

54-
`type`,
55-
`engines`, // Often used for ESM, so relates to `type`
57+
`type`,
58+
`engines`, // Often used for ESM, so relates to `type`
5659

57-
// Export fields
58-
`bin`,
59-
`directories`,
60-
`files`,
61-
`exports`,
62-
// End export fields
60+
// Export fields
61+
`bin`,
62+
`directories`,
63+
`files`,
64+
`exports`,
65+
// End export fields
6366

64-
`scripts`,
65-
// Tool-specific directly after scripts, alphabetical
66-
`browserslist`,
67-
`eslint`,
68-
`lint-staged`,
69-
// End tool-specific
67+
`scripts`,
68+
// Tool-specific directly after scripts, alphabetical
69+
`browserslist`,
70+
`eslint`,
71+
`lint-staged`,
72+
// End tool-specific
7073

71-
// Dependency related, specific order
72-
`engineStrict`,
73-
`overrides`, // Overrides before dependencies to emphasize their existence
74-
`optionalDependencies`,
75-
`peerDependencies`,
76-
`peerDependenciesMeta`,
77-
`dependencies`,
78-
`devDependencies`,
79-
// End dependency related
74+
// Dependency related, specific order
75+
`engineStrict`,
76+
`overrides`, // Overrides before dependencies to emphasize their existence
77+
`optionalDependencies`,
78+
`peerDependencies`,
79+
`peerDependenciesMeta`,
80+
`dependencies`,
81+
`devDependencies`,
82+
// End dependency related
8083

81-
`workspaces`,
82-
{ order: { type: `desc` } }, // Force other properties to go last
83-
],
84-
pathPattern: `^$`,
85-
},
86-
// Reinstate normal order for non-root properties
87-
{ order: { type: `asc` }, pathPattern: `.*` },
88-
],
89-
},
90-
},
91-
);
84+
`workspaces`,
85+
{ order: { type: `desc` } }, // Force other properties to go last
86+
],
87+
pathPattern: `^$`,
88+
},
89+
// Reinstate normal order for non-root properties
90+
{ order: { type: `asc` }, pathPattern: `.*` },
91+
],
92+
},
93+
});
94+
}
95+
return config;
96+
}

0 commit comments

Comments
 (0)