@schmiedmayerlab/grove-configurations
v0.1.1
Published
Shared ESLint and Prettier configurations for Grove TypeScript projects
Downloads
225
Maintainers
Readme
Grove Configurations
Getting Started
Shared ESLint and Prettier configurations that can be added to TypeScript projects with minimal setup.
Configurations are opinionated and strict. We aim to catch as many possible mistakes or elements we consider harmful practices early. Some rules are meant to be broken once in a while, with an explanation comment around them.
Installation
Install dependencies:
npm install --save-dev prettier eslint @schmiedmayerlab/grove-configurationsCreate an eslint.config.mjs file.
If aiming for React, use:
import { getEslintReactConfig } from '@schmiedmayerlab/grove-configurations'
export default getEslintReactConfig({ tsconfigRootDir: import.meta.dirname })If aiming for Node application, use:
import { getEslintNodeConfig } from '@schmiedmayerlab/grove-configurations'
export default getEslintNodeConfig({ tsconfigRootDir: import.meta.dirname })Create a .prettierrc.mjs file:
import { prettierConfig } from '@schmiedmayerlab/grove-configurations'
export default prettierConfigNow, when you run eslint . --fix, code is going to be linted and formatted.
ESLint customization
We aim to make this config mostly plug and play. You can adjust ESLint to your needs by passing additional configuration pieces.
import { getEslintNodeConfig } from '@schmiedmayerlab/grove-configurations'
export default [
...getEslintNodeConfig({ tsconfigRootDir: import.meta.dirname }),
{
ignores: ['lib/**/*'], // Ignore generated build files
},
{
rules: {
'@typescript-eslint/no-non-null-assertion': 'off', // ignore unwanted rule
},
},
]For more complex scenarios, we expose smaller pieces of configuration. You can use them and do micro-adjustments. This is not the recommended approach.
import {
getEslintRules,
getNodeGlobals,
getPreferArrowFunctions,
getReactPlugins,
getPrettierPlugin,
getTslint,
} from '@schmiedmayerlab/grove-configurations'
import globals from 'globals'
import tseslint from 'typescript-eslint'
const tsconfigRootDir = import.meta.dirname
export default tseslint.config(
...getEslintRules(),
getNodeGlobals(),
{
...getTslint(),
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
parserOptions: {
projectService: true,
tsconfigRootDir,
},
},
},
getPreferArrowFunctions(),
...getReactPlugins(),
...getPrettierPlugin(),
)License
This project is licensed under the MIT License. See Licenses for more information.
Contributors
This project is developed as part of the Schmiedmayer Lab at Stanford University. See the repository's CONTRIBUTORS.md.
