@stackr23/config-eslint

2.0.4 • Public • Published

@stackr23/config-eslint

Installation

to skip installation and configuration,
just run mrm --preset @stackr23/mrm lint

see: lint Task of '@stackr23/mrm'

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
like import 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')

node

applied to env 'browser' and 'node'

{
  paths:      [ './src' ],
  extensions: [ '.js', '.jsx', '.json' ],
}

Package Sidebar

Install

npm i @stackr23/config-eslint

Weekly Downloads

6

Version

2.0.4

License

MIT

Unpacked Size

71.1 kB

Total Files

29

Last publish

Collaborators

  • doubleu23