@stackr23/config-eslint
Installation
to skip installation and configuration,
just runmrm --preset @stackr23/mrm lint
install package: npm i -D eslint @stackr23/config-eslint
includes all eslint and prettier related plugins and shared configs
Configuration
eslint (either JS or JSON)
JS - {workspace}/.eslintrc.js:
module.exports = { extends: [require.resolve('@stackr23/config-eslint')] }
JSON - {workspace}/.eslintrc:
{ "extends": ["./node_modules/@stackr23/config-eslint/index.js"] }
prettier
// {workspace}/prettier.config.js
module.exports = require('@stackr23/config-eslint/prettier.config.js')
NPM Lint Script
"lint": "eslint --fix --ext \".js,.jsx,.ts,.tsx\" . --quiet --format pretty && prettier **/*.{css,scss,md,json} --write"
Integration (VsCode)
install extensions:
- "dbaeumer.vscode-eslint"
- "teeLang.vsprettier"
configure vscode:
// {workspace}/.vscode/settings.json
{
// PRETTIER
{
"editor.formatOnSaveTimeout": 500,
"editor.defaultFormatter": "teeLang.vsprettier",
"vsprettier.requireConfig": true,
"vsprettier.packageManager": "npm",
"vsprettier.useEsLint": false,
"vsprettier.useStyleLint": true,
"editor.codeActionsOnSave": { "source.fixAll.eslint": true },
"eslint.validate": [ "javascript", "javascriptreact", "typescript", "typescriptreact" ],
"eslint.alwaysShowStatus": true,
"eslint.run": "onType",
"eslint.lintTask.enable": true,
"eslint.workingDirectories": [{ "directory": ".", "changeProcessCWD": true }],
"javascript.implicitProjectConfig.checkJs": true,
"javascript.validate.enable": false,
"javascript.format.enable": false,
"[javascriptreact]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
"editor.formatOnPaste": false,
"editor.formatOnSave": false,
"editor.formatOnType": false,
"editor.formatOnSaveTimeout": 500
},
}
Import Resolvers
enables absolute import paths
likeimport Header from 'components/Header'
webpack
applied to env 'react'
-
uses 'tsconfig-paths-webpack-plugin' to resolve import paths
requires: workspaceRoot/tsconfig.json
see path-mapping for typescript -
if tsconfig.json is not present it won't use that plugin
and uses the default resolve config:resolve: { extensions: ['.jsx', '.js', '.ts', '.tsx', '.json'], // paths are relative to workspace root alias: { components: join(basename(CONSTANTS.paths.src), 'components'), assets: CONSTANTS.paths.assets }, modules: ['node_modules'], }
-
you can overwrite this config to fit your projects module resolvement,
if you add 'webpack.config.resolve.js' to your workspaceRoot
(use format of 'src/webpack.config.resolve.js')- This config will also be used by '@stackr23/webpack'
- for more information see webpack's resolve config
node
applied to env 'browser' and 'node'
{
paths: [ './src' ],
extensions: [ '.js', '.jsx', '.json' ],
}