Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@ksmithut/prettier-standard

ksmithut4.1kMIT0.2.0TypeScript support: included

Prettier and standard brought together!

prettier, eslint, standard, linting, formatting

readme

prettier-standard

Formats with prettier (actually prettierx) and lints with eslint preconfigured with standard rules (✿◠‿◠)

You don't have to fix any whitespace errors and waste time configuring eslint presets :relieved:

Note on Fork

This is a fork of sheerun/prettier-standard. At the time of forking, it seemed that the project was in need of dependency updates. The author seemed unable to attend to the issues, but it was a package I used and felt strongly enough to do something about it. If the package maintainer returns to maintain the package, I will happily stop work on this and move back over to using that one. In the meantime, I have this Pull Request opened there to get dependencies up to date (with breaking node version requirements).

Installation

yarn add --dev @ksmithut/prettier-standard

If you're using the npm: npm install --save-dev @ksmithut/prettier-standard.

You can also install globally with npm install -g @ksmithut/prettier-standard

Usage

Prettier-standard is best used with prettier-standard --lint command which formats and lints all non-ignored files in repository. Here's full usage:

Usage
  $ prettier-standard [<glob>]

Options
  --format  Just format all files in current repository
  --lint    Additionally lint code after formatting
  --check   Do not format, just check formatting
  --staged  Run only on staged files
  --changed Run only on changed files
  --since   Run only on changed files since given revision
  --lines   Run only on changed lines (warning: experimental!)
  --stdin   Force reading input from stdin
  --parser  Force parser to use for stdin (default: babel)
  --help    Tells how to use prettier-standard

Examples
  $ prettier-standard --changed --lint
  $ prettier-standard --lint '**/*.{js,css}'
  $ prettier-standard --since master
  $ "precommit": "prettier-standard --lint --staged" # in package.json
  $ echo 'const {foo} = "bar";' | prettier-standard --stdin
  $ echo '.foo { color: "red"; }' | prettier-standard --parser css

Warning: --lines flag should be considered experimental as prettier has issues with range formatting:

Examples

Typically you'll use this in your npm scripts (or package scripts):

{
  "scripts": {
    "format": "prettier-standard --format"
  }
}

We also encourage to use modern-node and lint-staged. You can configure it as follows:

{
  "scripts": {
    "precommit": "lint-staged"
  },
  "lint-staged": {
    "*": ["prettier-standard --lint"]
  }
}

NOTE: Unlike prettier this package simplifies your workflow by making --write flag a default, and allowing for passing code to stdin without additional --stdin flag.

Vim

It's probably best to use ale plugin. It supports multiple fixers, including prettier-standard:

Plug 'w0rp/ale'
let g:ale_fixers = {'javascript': ['prettier_standard']}
let g:ale_linters = {'javascript': ['']}
let g:ale_fix_on_save = 1

Sublime Text 3

It's possible to use 'prettier-standard' with Sublime Text 3.

  1. Install 'prettier-standard' globally according to the installation instructions above.
  2. Find the location of your installed executable file. On a unix based system (like MacOS):
$ which prettier-standard
  1. Copy the location. (e.g. /usr/local/bin/prettier-standard)
  2. Install SublimeJsPrettier according to their installation instructions.
  3. Open SublimeJsPrettier's default settings in Sublime and copy the line: "prettier_cli_path": ""
  4. Open SublimeJsPrettier's user settings in Sublime and add the line with the correct location of the 'prettier-standard' executable.
{
  "prettier_cli_path": "/usr/local/bin/prettier-standard"
}

You can now use 'prettier-standard' in Sublime Text 3 by opening the Command Palette (super + shift + p) and typing JsPrettier: Format Code.

Customizing

You can use .prettierrc for overriding some options, e.g to use semistandard:

{
  "semi": true
}

You can also configure linting by creating appropriate .eslintrc file that will override defaults:

{
  "rules": {
    "eqeqeq": "off"
  }
}

Prettier-standard includes following packages so you don't need to install them in your repository:

  • eslint
  • @babel/core
  • @babel/eslint-parser
  • eslint-config-prettier
  • eslint-config-standard
  • eslint-config-standard-jsx
  • eslint-config-standard-react
  • eslint-config-standard-with-typescript
  • eslint-plugin-import
  • eslint-plugin-jest
  • eslint-plugin-n
  • eslint-plugin-promise
  • eslint-plugin-react
  • eslint-plugin-react-hooks
  • eslint-plugin-standard
  • @typescript-eslint/eslint-plugin
  • @typescript-eslint/parser

Ignoring Files

You can use .prettierignore file for ignoring any files to format, e.g:

dist
.next
**/*.ts

You can also use .eslintignore to format some files, but prevent linting others.

API

prettier-standard exposes the same API as prettier: https://prettier.io/docs/en/api.html

It also exposes one additional method that works similarly to its CLI:

run(cwd, config)

  • cwd - path where to execute prettier-standard
  • config - object configuring execution
    • patterns - patterns to use for formatting files (array of strings)
    • check - whether to check instead of format files (boolean, default: false)
    • lint - whether to perform linting (boolean, default: false)
    • changed - whether to format only changed lines (boolean, experimental, default: false)
    • since - format changes that happened since given branch (string, optional, example: "master")
    • onProcess - callback that is called for each processed file matching pattern: { file, formatted, check, runtime }

LICENSE

MIT

changelog

v2.1.0 - May 3, 2021

  • 908fdf8 Update: add PrivateIdentifier and PropertyDefinition (#20) (Toru Nagashima)
  • 2d7be11 Chore: No longer test in Node.js 13 (#17) (Michaël De Boey)
  • b41b509 Docs: Update required Node.js version (#15) (Michaël De Boey)

v2.0.0 - August 14, 2020

  • fb86ca3 Breaking: drop support for Node <10 (#13) (Kai Cataldo)
  • 69383b3 Chore: move to GitHub Actions (#14) (Kai Cataldo)

v1.3.0 - June 19, 2020

  • c92dd7f Update: add ChainExpression node (#12) (Toru Nagashima)

v1.2.0 - June 4, 2020

  • 21f28bf Update: added exported in exportAllDeclaration key (#10) (Anix)

v1.1.0 - August 13, 2019

v1.0.0 - December 18, 2017

  • 1f6bd38 Breaking: update keys (#4) (Toru Nagashima)

v0.1.0 - November 17, 2017

  • 17b4a88 Chore: update repository field in package.json (#3) (Toru Nagashima)
  • a5a026b New: eslint-visitor-keys (#1) (Toru Nagashima)
  • a1a48b8 Update: Change license to Apache 2 (#2) (Ilya Volodin)
  • 2204715 Initial commit (Toru Nagashima)