Skip to content

Commit 07254ec

Browse files
committed
Split into multiple entry points to fix import errors from unused configs
1 parent 65afeaa commit 07254ec

20 files changed

+41
-73
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,10 @@ To use the default config, follow these steps:
5858
3. Include default config in your [ESLint configuration file](https://eslint.org/docs/latest/use/configure/configuration-files) (usually `eslint.config.js`):
5959

6060
```js
61-
import cpeslint from '@code-pushup/eslint-config';
61+
import javascript from '@code-pushup/eslint-config/javascript.js';
6262
import tseslint from 'typescript-eslint';
6363

64-
export default tseslint.config(...cpeslint.javascript);
64+
export default tseslint.config(...javascript);
6565
```
6666

6767
Depending on your tech stack, you may wish to extend other configs as well ([listed above](#⚙️-configs)). This will require installing additional peer dependencies. For more details, refer to setup docs for the configs you're interested in using.

docs/angular.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ Config for **Angular** projects.
1515
4. Add to your `eslint.config.js` file:
1616

1717
```js
18-
import cpeslint from '@code-pushup/eslint-config';
18+
import angular from '@code-pushup/eslint-config/angular.js';
1919
import tseslint from 'typescript-eslint';
2020

2121
export default tseslint.config(
22-
...cpeslint.angular,
22+
...angular,
2323
{
2424
// It is recommended that selectors in Angular use a common custom prefix
2525
// - see https://angular.io/guide/styleguide#style-02-07

docs/cypress.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ Config for projects using **Cypress** for testing.
1414
3. Add to your `eslint.config.js` file:
1515

1616
```js
17-
import cpeslint from '@code-pushup/eslint-config';
17+
import cypress from '@code-pushup/eslint-config/cypress.js';
1818
import tseslint from 'typescript-eslint';
1919

20-
export default tseslint.config(...cpeslint.cypress);
20+
export default tseslint.config(...cypress);
2121
```
2222

2323
## 📏 Rules (6)

docs/graphql.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Config for **GraphQL servers** implemented in Node.js.
1717

1818
```js
1919
export default tseslint.config(
20-
...cpeslint.graphql,
20+
// ...
2121
{
2222
files: ['**/*.graphql'],
2323
languageOptions: {
@@ -33,10 +33,10 @@ Config for **GraphQL servers** implemented in Node.js.
3333
4. Add to your `eslint.config.js` file:
3434

3535
```js
36-
import cpeslint from '@code-pushup/eslint-config';
36+
import graphql from '@code-pushup/eslint-config/graphql.js';
3737
import tseslint from 'typescript-eslint';
3838
39-
export default tseslint.config(...cpeslint.graphql);
39+
export default tseslint.config(...graphql);
4040
```
4141

4242
## 📏 Rules (317)

docs/javascript.md

+1-9
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,7 @@ Default config, suitable for any **JavaScript/TypeScript** project.
44

55
## 🏗️ Setup
66

7-
1. If you haven't already, make sure to [install `@code-pushup/eslint-config` and its required peer dependencies](../README.md#🏗️-setup).
8-
2. Add to your `eslint.config.js` file:
9-
10-
```js
11-
import cpeslint from '@code-pushup/eslint-config';
12-
import tseslint from 'typescript-eslint';
13-
14-
export default tseslint.config(...cpeslint.javascript);
15-
```
7+
Refer to [setup instructions in README](../README.md#🏗️-setup).
168

179
## 📏 Rules (290)
1810

docs/jest.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ Config for projects using **Jest** for testing.
1414
3. Add to your `eslint.config.js` file:
1515

1616
```js
17-
import cpeslint from '@code-pushup/eslint-config';
17+
import jest from '@code-pushup/eslint-config/jest.js';
1818
import tseslint from 'typescript-eslint';
1919

2020
export default tseslint.config(
21-
...cpeslint.jest,
21+
...jest,
2222
{
2323
// customize rules if needed:
2424
rules: {

docs/ngrx.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ Config for **Angular** projects using **NgRx** library.
1515
4. Add to your `eslint.config.js` file:
1616

1717
```js
18-
import cpeslint from '@code-pushup/eslint-config';
18+
import ngrx from '@code-pushup/eslint-config/ngrx.js';
1919
import tseslint from 'typescript-eslint';
2020

2121
export default tseslint.config(
22-
...cpeslint.ngrx,
22+
...ngrx,
2323
{
2424
// It is recommended that selectors in Angular use a common custom prefix
2525
// - see https://angular.io/guide/styleguide#style-02-07

docs/node.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ Config for **Node.js** projects.
1414
3. Add to your `eslint.config.js` file:
1515

1616
```js
17-
import cpeslint from '@code-pushup/eslint-config';
17+
import node from '@code-pushup/eslint-config/node.js';
1818
import tseslint from 'typescript-eslint';
1919

20-
export default tseslint.config(...cpeslint.node);
20+
export default tseslint.config(...node);
2121
```
2222

2323
## 📏 Rules (294)

docs/storybook.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ Config for projects using **Storybook** for UI components.
1414
3. Add to your `eslint.config.js` file:
1515

1616
```js
17-
import cpeslint from '@code-pushup/eslint-config';
17+
import storybook from '@code-pushup/eslint-config/storybook.js';
1818
import tseslint from 'typescript-eslint';
1919

20-
export default tseslint.config(...cpeslint.storybook);
20+
export default tseslint.config(...storybook);
2121
```
2222

2323
## 📏 Rules (11)

docs/typescript.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@ Config for strict **TypeScript** projects.
5959
3. Add to your `eslint.config.js` file:
6060

6161
```js
62-
import cpeslint from '@code-pushup/eslint-config';
62+
import typescript from '@code-pushup/eslint-config/typescript.js';
6363
import tseslint from 'typescript-eslint';
6464
65-
export default tseslint.config(...cpeslint.typescript);
65+
export default tseslint.config(...typescript);
6666
```
6767

6868
## 📏 Rules (345)

docs/vitest.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ Config for projects using **Vitest** for testing.
1414
3. Add to your `eslint.config.js` file:
1515

1616
```js
17-
import cpeslint from '@code-pushup/eslint-config';
17+
import vitest from '@code-pushup/eslint-config/vitest.js';
1818
import tseslint from 'typescript-eslint';
1919

2020
export default tseslint.config(
21-
...cpeslint.vitest,
21+
...vitest,
2222
{
2323
// customize rules if needed:
2424
rules: {

eslint.config.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
// @ts-check
22

33
import tseslint from 'typescript-eslint';
4-
import cpeslint from './src/index.js';
4+
import node from './src/configs/node.js';
5+
import vitest from './src/configs/vitest.js';
56

6-
export default tseslint.config(...cpeslint.node, ...cpeslint.vitest, {
7+
export default tseslint.config(...node, ...vitest, {
78
rules: {
89
'@typescript-eslint/no-magic-numbers': 'off',
910
'import/extensions': ['error', { js: 'always', json: 'never' }],

package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
"type": "module",
99
"main": "./src/index.js",
1010
"exports": {
11-
".": "./src/index.js"
11+
".": "./src/configs/javascript.js",
12+
"./*": "./src/configs/*.js",
13+
"./*.js": "./src/configs/*.js"
1214
},
1315
"files": [
1416
"./src"

scripts/helpers/configs.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ export default tseslint.config(
116116
md`Otherwise, you can use ${md.link('https://the-guild.dev/graphql/eslint/docs/getting-started/parser-options#schema', md.code('parserOptions.schema'))}, e.g.:${md.codeBlock(
117117
'js',
118118
`export default tseslint.config(
119-
...cpeslint.graphql,
119+
// ...
120120
{
121121
files: ['**/*.graphql'],
122122
languageOptions: {

scripts/helpers/format-config.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export function configRulesToMarkdown(
5151
.paragraph(configDescription(config))
5252
.heading(2, '🏗️ Setup')
5353
.$if(
54-
config === 'index',
54+
config === 'javascript',
5555
doc =>
5656
doc.paragraph(
5757
md`Refer to ${md.link(setupLink, 'setup instructions in README')}.`,
@@ -74,16 +74,16 @@ export function configRulesToMarkdown(
7474
md`Add to your ${md.code('eslint.config.js')} file:${md.codeBlock(
7575
'js',
7676
[
77-
"import cpeslint from '@code-pushup/eslint-config';",
77+
`import ${config} from '@code-pushup/eslint-config/${config}.js';`,
7878
"import tseslint from 'typescript-eslint';",
7979
'',
8080
...(configsExtraEslintrc[config]
8181
? [
8282
'export default tseslint.config(',
83-
` ...cpeslint.${config}${configsExtraEslintrc[config]}`,
83+
` ...${config}${configsExtraEslintrc[config]}`,
8484
');',
8585
]
86-
: [`export default tseslint.config(...cpeslint.${config});`]),
86+
: [`export default tseslint.config(...${config});`]),
8787
].join('\n'),
8888
)}`,
8989
]),

scripts/helpers/format-readme.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ export function configsToMarkdown(configs, peerDeps, extended) {
7171
md`Include default config in your ${md.link('https://eslint.org/docs/latest/use/configure/configuration-files', 'ESLint configuration file')} (usually ${md.code('eslint.config.js')}):${md.codeBlock(
7272
'js',
7373
[
74-
"import cpeslint from '@code-pushup/eslint-config';",
74+
"import javascript from '@code-pushup/eslint-config/javascript.js';",
7575
"import tseslint from 'typescript-eslint';",
7676
'',
77-
'export default tseslint.config(...cpeslint.javascript);',
77+
'export default tseslint.config(...javascript);',
7878
].join('\n'),
7979
)}`,
8080
])

src/index.js

-25
This file was deleted.

tests/configs/typescript.spec.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ describe('typescript config', () => {
4646
});
4747

4848
test('should only explicitly reference rules which require type checking (with specified exceptions)', async () => {
49-
const {
50-
default: { typescript },
51-
} = await import('@code-pushup/eslint-config');
49+
const { default: typescript } = await import(
50+
'@code-pushup/eslint-config/typescript'
51+
);
5252
const ruleIds = getExplicitRuleIds(typescript);
5353
const rules = await loadRulesByIds(ruleIds);
5454
const rulesWithoutTypes = Object.entries(rules)

tests/helpers/lint-utils.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ export function createLintUtils(
2525
await fs.mkdir(cwd, { recursive: true });
2626
await fs.writeFile(
2727
path.join(cwd, 'eslint.config.js'),
28-
`import cpeslint from '@code-pushup/eslint-config'
28+
`import ${configName} from '@code-pushup/eslint-config/${configName}.js'
2929
3030
export default [
31-
...cpeslint['${configName}'],
31+
...${configName},
3232
{
3333
languageOptions: {
3434
parserOptions: {

tests/package.json.spec.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@ describe('package.json checks', () => {
5757
});
5858

5959
test('should mark peer dependency as optional if not included in default config', async () => {
60-
const {
61-
default: { javascript },
62-
} = await import('@code-pushup/eslint-config');
60+
const { default: javascript } = await import('@code-pushup/eslint-config');
6361
const plugins = javascript.flatMap(config =>
6462
Object.keys(config.plugins ?? {}),
6563
);

0 commit comments

Comments
 (0)