Skip to content

Commit

Permalink
docs: split and update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
Gijsdeman authored and JustSamuel committed Nov 13, 2024
1 parent a901b18 commit 5c780cd
Show file tree
Hide file tree
Showing 6 changed files with 130 additions and 43 deletions.
52 changes: 9 additions & 43 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,68 +1,36 @@
# GEWIS Eslint Config
# GEWIS Shared Configs

This repository contains a shared ESLint configuration for use across all GEWIS projects. It aims to enforce consistent coding standards and code quality.
This repository contains shared configurations for use across all GEWIS projects. It aims to enforce consistent coding standards and code quality.

## Installation

To use this ESLint configuration in your project, install it using `npm` or `yarn`.

```bash
npm install @gewis/eslint-config@github.com:GEWIS/eslint-config --save-dev
yarn add @gewis/eslint-config@github.com:GEWIS/eslint-config --dev
```

## Usage

The package provides sharable configurations for [ESLint](https://eslint.org/docs/latest/extend/shareable-configs) and
[prettier](https://prettier.io/docs/en/sharing-configurations) that can be used directly in your project's configuration files.
- [ESLint](https://eslint.org/docs/latest/extend/shareable-configs) configuration for JavaScript, TypeScript, React and Vue
- [Prettier](https://prettier.io/docs/en/sharing-configurations) configuration including ESLint ignores

> [!NOTE]
> The shared configurations for ESLint are not compatible with ESLint `v8.x`
### ESLint Configuration

### ESLint
In your project's root directory, create or update the `eslint.config.{js,mjs,cjs,ts,mts,cts}` file to extend this configuration.
You can pick a combination of various configuration files:

- `index.mjs`
- `eslint.vue.mjs`
- `index.mjs`
- `eslint.react.mjs`

```javascript
import eslint from '@gewis/eslint-config/index.mjs';
import vue from '@gewis/eslint-config/eslint.vue.mjs';
import prettier from '@gewis/eslint-config/index.mjs';

export default [...eslint, ...vue, ...prettier];
```

It is possible to (partially) [override settings](https://eslint.org/docs/latest/extend/shareable-configs#overriding-settings-from-shareable-configs)
Then, follow one of the specific README's to configure your ESLint instance. It is possible to (partially) [override settings](https://eslint.org/docs/latest/extend/shareable-configs#overriding-settings-from-shareable-configs)
of the shared configurations in your config file. It is also possible to add your own ignored file to the configurations

> [!NOTE]
> All files in the `.gitignore` file(s) are ignored by default
### Prettier Configuration
### [Prettier](./configs/prettier-config/README.md)

In your project's root directory, create or update the `.prettierrc.mjs` file to extend this configuration.
There is a single [shared prettier configuration](https://prettier.io/docs/en/sharing-configurations) available; `prettier.config.mjs`.

```javascript
import prettier from '@gewis/eslint-config/prettier.config.mjs';

/**
* @type {import("prettier").Config}
*/
export default {
...prettier,
};
```
Follow the specific README's to configure your Prettier and ESLint instance.

Just like with ESLint, it is possible to (partially) [override settings](https://prettier.io/docs/en/sharing-configurations#extending-a-sharable-config).
of the shared configuration.

### Run
### Scripts

Make sure to define the lint and format script in your `package.json`.

Expand All @@ -77,8 +45,6 @@ Make sure to define the lint and format script in your `package.json`.
}
```

You can now lint and format your files using the configured rules and scripts.

## Contributing

Contributions are welcome! Please open an issue or submit a pull request if you'd like to suggest changes or improvements.
Expand Down
19 changes: 19 additions & 0 deletions configs/eslint-config-javascript/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# @gewis/eslint-config-javascript

Sharable JavaScript ESLint configuration for GEWIS projects.

## Installation

```bash
npm install @gewis/eslint-config@github.com:GEWIS/eslint-config --save-dev
yarn add @gewis/eslint-config@github.com:GEWIS/eslint-config --dev
```

## Configuration
In your ESLint configuration file, add the following:

```javascript
import { eslintConfig as common } from '@gewis/eslint-config-javascript';

export default [...common];
```
23 changes: 23 additions & 0 deletions configs/eslint-config-react/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# @gewis/eslint-config-react

Sharable React ESLint configuration for GEWIS projects.

## Installation

```bash
npm install @gewis/eslint-config-react --save-dev
yarn add @gewis/eslint-config-react --dev
```

## Configuration
In your ESLint configuration file, add the following:

```javascript
import { eslintConfig as common } from '@gewis/eslint-config-typescript';
import { eslintConfig as react } from '@gewis/eslint-config-react';

export default [
...common,
...react
];
```
19 changes: 19 additions & 0 deletions configs/eslint-config-typescript/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# @gewis/eslint-config-typescript

Sharable TypeScript ESLint configuration for GEWIS projects.

## Installation

```bash
npm install @gewis/eslint-config-typescript --save-dev
yarn add @gewis/eslint-config-typescript --dev
```

## Configuration
In your ESLint configuration file, add the following:

```javascript
import { eslintConfig as common } from '@gewis/eslint-config-typescript';

export default [...common];
```
23 changes: 23 additions & 0 deletions configs/eslint-config-vue/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# @gewis/eslint-config-vue

Sharable Vue ESLint configuration for GEWIS projects.

## Installation

```bash
npm install @gewis/eslint-config-vue --save-dev
yarn add @gewis/eslint-config-vue --dev
```

## Configuration
In your ESLint configuration file, add the following:

```javascript
import { eslintConfig as common } from '@gewis/eslint-config-typescript';
import { eslintConfig as vue } from '@gewis/eslint-config-vue';

export default [
...common,
...vue
];
```
37 changes: 37 additions & 0 deletions configs/prettier-config/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# @gewis/prettier-config

Sharable Prettier configuration for GEWIS projects.

## Installation

```bash
npm install @gewis/prettier-config --save-dev
yarn add @gewis/prettier-config --dev
```

## Configuration

In your ESLint configuration file, add the following:

```javascript
import { eslintConfig as common } from '@gewis/eslint-config-typescript';
import { eslintConfig as prettier } from '@gewis/prettier-config';

export default [
...common,
prettier
];
```

In your Prettier configuration file, add the following:

```javascript
import { prettierConfig } from '@gewis/prettier-config';

/**
* @type {import("prettier").Config}
*/
export default {
...prettierConfig,
};
```

0 comments on commit 5c780cd

Please sign in to comment.