1.0.1-alpha.0 • Published 3 years ago

@guidecx/config-prettier v1.0.1-alpha.0

Weekly downloads
-
License
ISC
Repository
github
Last release
3 years ago

GCX Prettier Config

This module contains the configuration files for Prettier that are used by all GuideCX applications.

Installing library into another project

The index.js file exports our prettier configuration. In the project you are adding this configuration file to, you can do the following in your .prettierrc.js file assuming you have installed the dependency via npm install --save-dev @guidecx/config-prettier:

module.exports = {
  ...require("@guidecx/config-prettier"),
  // overwritten rules as needed. EG:
  // semi: false
};

Running prettier automatically in each application

Generally it is a good idea to make sure that all of our projects are using husky pre-commit hooks with lint-staged to run prettier against all of the files that were changed in a commit.

According to the lint-staged docs, the easiest way to install husky and lint-staged together is by running npx mrm lint-staged. You'll need to install prettier via npm i --save-dev prettier as well.

You will also need to install npm-run-all and prettier as peerDependencies; npm install --save-dev npm-run-all prettier

Follow the installation instructions provided in the husky documentation, then add the follow lines to the package.json file:

"scripts": {
  "format": "prettier \"{src,pages,components,lib}/**/*.{ts,tsx,js,jsx,graphql}\"",
  "format:write": "yarn format -- --list-different --write",
  "format:check": "yarn format -- --check",
  "validate": "npm-run-all --parallel -c format:check \"lint --quiet\" tsc test"
},
"husky": {
  "hooks": {
    "pre-commit": "lint-staged"
  }
},
"lint-staged": {
  "{src,pages,components,lib}/**/*.{ts,tsx,js,jsx,graphql}": [
    "yarn format:write",
    "git add"
  ]
}

Note: the validate script is dependent on you having lint and tsc scripts. If those do not exist in your package, modify the script to meet your needs.

Prettierignore file

As of prettier@2.2.1, the .prettierignore file does not allow us to extend another ignore config file. Because of this, an ignore file will need to be created in each application that needs one (it is recommended to have one in every project that uses prettier).

This library has an example file that you can copy and modify as needed.

# every project
package.json
node_modules/
build/
public/
dist/

# react applications with apollo
src/apollo/schema.json
src/apollo/graphql.tsx

# express applications