Git Product home page Git Product logo

eslint-config's Introduction

@serverless/eslint-config

Common ESLint, Prettier configuration for Serverless projects

Configuration in a project

1. Install needed dependencies & the config itself

npm i --save-dev eslint eslint-plugin-import prettier git-list-updated @serverless/eslint-config

2. Configure ESLint

Add eslintConfig to package.json:

For Node.js projects:

{
  "eslintConfig": {
    "extends": "@serverless/eslint-config/node",
    "root": true
  }
}

For Browser projects:

{
  "eslintConfig": {
    "extends": "@serverless/eslint-config/browser",
    "root": true
  }
}

3. Configure Prettier

Add prettier.config.js file with following content:

'use strict';

module.exports = require('@serverless/eslint-config/prettier.config');

4. Configure npm scripts

{
  "scripts": {
    "lint": "eslint  --ignore-path .gitignore .",
    "lint:updated": "pipe-git-updated --ext=js -- eslint --ignore-path .gitignore",
    "prettier-check": "prettier -c --ignore-path .gitignore \"**/*.{css,html,js,json,md,yaml,yml}\"",
    "prettier-check:updated": "pipe-git-updated --ext=css --ext=html --ext=js --ext=json --ext=md --ext=yaml --ext=yml -- prettier -c",
    "prettify": "prettier --write --ignore-path .gitignore \"**/*.{css,html,js,json,md,yaml,yml}\"",
    "prettify:updated": "pipe-git-updated --ext=css --ext=html --ext=js --ext=json --ext=md --ext=yaml --ext=yml -- prettier --write"
  }
}

5. Ensure to validate changes in CI

Run following validation of PR's in CI build.

Note: following should be run only for PR's (as *:updated) scripts may fail on branch or tag builds due to lack of existing reference to main)

npm run lint:updated && npm run prettier-check:updated

Commitlint and automation of release process (experimental)

Commit messages in context of this project should follow Convention Commits Convention

See proposed Commit Message Guidelines

Release process automation with help of Travis CI

  1. Commit messages are validated (with commitlint) in context of PR's that are coming from local branches. To not increase difficulty of contribution, we do not enforce that on external contributors. Still in turn PR's coming from forks (if commit messages do not follow CC), are expected to be squash merged with a valid CC commit message.
  2. In Release PR by running npm run prepare-release command developer bumps version in package.json and generates the changelog entry (which can be altered if needed).
  3. Release PR's are automatically detected in CI by fact of version in package.json file being changed. In context of that build, existence of new version changelog entry (in CHANGELOG.md) is validated.
  4. Once release PR is merged, main build detects that release PR was merged by fact that it covers change of version field in package.json file. In such case (after tests pass) version tag is created and pushed to the repository
  5. In context fo version tag build, new version is published to npm, and release notes are retrieved from CHANGELOG.md and pushed to GitHub.
  6. If needed release notes can be updated at any time afterwards. They should be updated in CHANGELOG.md and change can be pushed to GitHub release notes by running: npx github-release-from-cc-changelog <version>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.