2.8.4 • Published 2 years ago

eslint-config-slco v2.8.4

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

ESLint-Config-SLCO   :page_with_curl:

:coffee: NPMJS URL: ESLint-config-slco

Eslint-config-slco is an npm package with my eslint enabled and prettier settings.
Easy to use and easily extended. :beer:

I. Install Package

  npm i eslint-config-slco@latest

II. Extending eslint config in one of two ways:

  • creating a new .eslintrc file in root of the project
  • creating a new or adding to an exisitng eslintConfig object in package.json
 {
    "extends": ["slco"] // with .eslintrc file
 }

 // or package.json eslintConfig object
 {
  "eslintConfig": {
    "extends": ["eslint-config-slco"] //add last
    }
 }

III. Add linting & peerdeps scripts

  • In package.json file:
 {
  "scripts": {
    "slco": "npx install-peerdeps --dev eslint-config-slco",
    "lint": "eslint .",
    "lint:fix": "eslint . --fix"
  }
}

• Before running slco, check if the script is available via npm:

 npm run-script  // it shows list of avail scripts. If so type:
 npm run slco

 ..otherwise type:

 npx install-peerdeps --dev eslint-config-slco

When correctly installed, it shows a SUCCESS message.

IV. To overwrite eslint or prettier settings:

  • Do so inside of rules for eslint and under prettier/prettier for prettier
  // example  
 {
  "extends": [
    "slco" // (last)
  ],
  "rules": { // ESLINT rules
    "no-console": 2, // overwrites eslint 1-warning with 2-error
    
    "prettier/prettier": [ // PRETTIER rules
      "warn",
      {
        "trailingComma": "es5",
        "singleQuote": true,
        "printWidth": 200, // overwrites 70 with 200
      }
    ]
  }
 }

To have IDE lint files:

WebStorm :book:

Enable Node in Webstorm

Set ESlint

Fixing Errors

Non ESlint errors

Adding ESLint error to Rules in Package.json

Using VSCode :book:

  • In VSCode settings or
  • Inside a new .vscode/settings.json file
 {
    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true
    }
 }

REFERENCE FILES I:

  // REFERENCE PURPOSES I: REACT & JEST

  // package.json
  "dependencies": {
    ...
    react-test-renderer ^18.2.0         
    @testing-library/jest-dom ^5.16.5       
    @testing-library/react ^13.4.0      
    @testing-library/user-event ^13.5.0      
    jest ^29.3.1      
    jest-environment-jsdom ^29.3.1     
  }

  scripts: {
    ...
    "test": "jest --watchAll"
  }

  // babel.config.js
  module.exports
  = {
  presets: [
    '@babel/preset-env',
    [
      '@babel/preset-react',
      {
        runtime: 'automatic'
      }
    ]
  ]
}

// jest.config.js
module.exports = {
  moduleFileExtensions: [
    'js',
    'jsx'
  ],
  modulePathIgnorePatterns: [
    '<rootDir>/node_modules/'
  ],
  moduleNameMapper: {
    '\\.(css|less)$': '<rootDir>/src/app.css',
    // Support import ~
    '^~(.*)': '<rootDir>/node_modules/$1'
  },
  setupFilesAfterEnv: [
    '<rootDir>/src/setupTests.js'
  ],
  testEnvironment: 'jsdom'
}

// @jest-environment jsdom //  or per file

REFERENCE FILES II

  // REFERENCE PURPOSES II
  // Adding Cypress to above React/Jest config

  // package.json
  "dependencies": {
    ...
    react-test-renderer ^18.2.0         
    @testing-library/jest-dom ^5.16.5      
    @testing-library/react ^13.4.0
    @testing-library/user-event  ^13.5.0
    jest ^29.3.1
    jest-environment-jsdom ^29.3.1,
    ...,
    "@testing-library/jest-dom": "^5.16.5"       
    "@testing-library/react": "^13.4.0"       
    "@testing-library/user-event": "^13.5.0"      
  }

  scripts: {
    ...
    "test": "jest --watchAll",
    "cypress:open": "./node_modules/.bin/cypress open",
    "cypress:run": "./node_modules/.bin/cypress run",
    "cybookshop": "npm run cypress:open --record --spec 'cypress/e2e/bookshop.spec.cy.js",
    "slco": "npx install-peerdeps --dev eslint-config-slco",
    "lint": "eslint .",
    "lint:fix": "eslint . --fix",
    },
    "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest",
      "plugin:cypress/recommended",
      "eslint-config-slco"
    ],
    "rules": {
      "jest/valid-expect": 0,
      "react/prop-types": 0,
      "cypress/no-unnecessary-waiting": 0,
      "testing-library/await-async-utils": 0
    }
  },
  
  ...
  ...

// babel.config.js
module.exports= {
    presets: [
        '@babel/preset-env',
    [
        '@babel/preset-react',
    {
        runtime: 'automatic'
    }
    ]
  ]
}

    // cypress.config.js
    const { defineConfig } = require('cypress')
    require('dotenv').config()
    
    module.exports = defineConfig({
      e2e: {
        baseUrl: process.env.REACT_APP_BASE_URL,
        env: {
          development: process.env.REACT_APP_DEV,
          booksApi: process.env.REACT_APP_BASE_API, // ..8080/books
        },
        pageLoadTimeout: process.env.REACT_APP_PAGE_LOAD_TIMEOUT,
        watchForFileChanges: false,
    
        defaultCommandTimeout: 8000,
        fileServerFolder: process.env.REACT_APP_SERVER_FOLDER, // stubServer
        setupNodeEvents(on, config) {
          // node evts
          console.log('\n\n -| config --> ', config, ' ..l__l__\n')
        },
      },
    })


  // jest.config.js
  module.exports = {
     moduleFileExtensions: [
        'js',
        'jsx'
     ],
     modulePathIgnorePatterns: [
        '<rootDir>/node_modules/'
     ],
     moduleNameMapper: {
        '\\.(css|less)$': '<rootDir>/src/app.css',
        // Support import ~
        '^~(.*)': '<rootDir>/node_modules/$1'
     },
     setupFilesAfterEnv: [
        '<rootDir>/src/setupTests.js'
     ],
     testEnvironment: 'jsdom'
  }
    
 // @jest-environment jsdom //  or per file
2.8.3

2 years ago

2.8.4

2 years ago

2.8.2

2 years ago

2.8.1

2 years ago

2.7.1

2 years ago

2.7.0

2 years ago

2.6.9

2 years ago

2.6.8

2 years ago

2.6.7

2 years ago

2.6.6

2 years ago

2.6.5

2 years ago

2.6.4

2 years ago

2.6.3

2 years ago

2.5.3

2 years ago

2.4.3

2 years ago

2.3.3

2 years ago

2.3.2

2 years ago

2.2.2

2 years ago

2.2.1

2 years ago

2.1.1

2 years ago

2.0.0

2 years ago

1.9.0

2 years ago

1.8.0

2 years ago

1.7.0

2 years ago

1.6.0

2 years ago

1.4.0

2 years ago

1.3.9

2 years ago

1.3.8

2 years ago

1.3.7

2 years ago

1.3.6

2 years ago

1.3.5

2 years ago

1.3.4

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.9

2 years ago

1.2.8

2 years ago

1.2.7

2 years ago

1.2.6

2 years ago

1.2.5

2 years ago

1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.9

2 years ago

1.1.8

2 years ago

1.1.7

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago