JsPrettier
JsPrettier is a Sublime Text Plug-in for Prettier, the opinionated code formatter.
Table of Contents
Installation
JsPrettier is compatible with both Sublime Text 2 and 3, and all supported Operating Systems.
Requirements
JsPrettier requires the following programs to be installed prior to use:
- Sublime Text – Text editor for code
- node.js – JavaScript runtime
- yarn or npm – Package manager for JavaScript
- Prettier – Opinionated JavaScript formatter
Install Prettier
If you installed Prettier globally (using the yarn or npm command below), there is nothing else you need to do.
# using yarn:
yarn global add prettier
# using npm:
npm install -g prettier
We're defaulting to yarn but you can use npm if you like.
Install JsPrettier via Package Control
The easiest and recommended way to install JsPrettier is using Package Control.
From the main application menu, navigate to:
Tools
->Command Palette...
->Package Control: Install Package
, type the word JsPrettier, then select it to complete the installation.
Install JsPrettier Manually
- Download and extract JsPrettier zip file to your Sublime Text Packages directory.
- Rename the extracted directory from
SublimeJsPrettier-master
toJsPrettier
.
Default Sublime Text Packages Paths:
- OS X:
~/Library/Application Support/Sublime Text [2|3]/Packages
- Linux:
~/.Sublime Text [2|3]/Packages
- Windows:
%APPDATA%/Sublime Text [2|3]/Packages
NOTE Replace the
[2|3]
part with the appropriate Sublime Text version for your installation.
Install JsPrettier Using Git
Alternatively, if you're a Git user, you can install JsPrettier and keep it up-to-date by cloning the repository directly into your Sublime Text Packages directory.
You can locate your Sublime Text Packages directory by using the menu item
Preferences
-> Browse Packages...
git clone https://github.com/jonlabelle/SublimeJsPrettier.git "JsPrettier"
Usage
To run the JsPrettier
command... open the Sublime Text Command Palette
(super + shift + p) and type JsPrettier: Format Code.
You can also right-click anywhere in the file to bring up the Context Menu and select JsPrettier Format Code.
Command Scope
JsPrettier
will attempt to format selections of code first, otherwise the
entire file will be formatted.
NOTE: When the
auto_format_on_save
setting is set totrue
, the entire file will always be formatted.
Custom Key Binding
To add a custom key binding to JsPrettier
, please reference the following
example which binds js_prettier
to ctrl/cmd + b.
{ "keys": ["super+b"], "command": "js_prettier" }
Settings
All Prettier options are configurable from the JsPrettier.sublime-settings
file, accessible from the Preferences > Package Settings >
JsPrettier menu shortcut.
Sublime Text Settings
-
debug (default: false)
When enabled (true), additional debugging information about the command and configured settings will be printed to the Sublime Text Console; useful for troubleshooting purposes. -
prettier_cli_path (default: empty)
It's recommended to leave this setting empty (the default). However, if Sublime Text has problems resolving the CLI path to the Prettier executable, you can explicitly set the appropriate path here.When the setting is left empty, the path is resolved by searching locations in the following order, returning the first matched path:
- Locally installed Prettier, relative to the Sublime Text Project file root
directory, e.g.:
node_modules/.bin/prettier
. - The user's home directory, e.g.:
$HOME/node_modules/.bin/prettier
. - Look in the JsPrettier Sublime Text plug-in directory for
node_modules/.bin/prettier
. - Finally, check if Prettier is installed globally.
nvm users are required to set an appropriate absolute prettier_cli_path (and absolute node_path); according to the target runtime environment.
- Locally installed Prettier, relative to the Sublime Text Project file root
directory, e.g.:
-
node_path (default: empty)
It's recommended to leave this setting empty (the default). However, if Sublime Text has problems resolving the absolute path to the node executable, you can explicitly set the appropriate path here.nvm users are required to set an appropriate absolute node_path (and absolute prettier_cli_path); according to the target runtime environment.
-
auto_format_on_save (default: false)
Whether or not to automatically format on every file save. -
allow_inline_formatting (default: false)
Enables the ability to format selections of in-lined code. For example, to format a selection of JavaScript code within a PHP or HTML file. When true, the JsPrettier command is available for use across all Sublime Text syntaxes. -
custom_file_extensions (default: [])
There's built-in support already forjs
,jsx
,ts
,tsx
,css
,scss
andless
files. Any additional file extensions must be specified here (excluding the leading dot). -
additional_cli_args (default: {})
A key-value pair of additional arguments to append to the prettier command.Example:
{ "--no-color": "", "--single-quote=false": "", "--cursor-offset": -1, "--list-different": "" }
NOTE: If choosing to specify additional cli args, it is assumed that each argument is supported by the prettier-cli. Otherwise, the command will fail to run, and errors will be dumped out to the Sublime Text Console. You can also enable the
debug
setting to inspect the generated command-line output passed to prettier; which is also useful for quickly troubleshooting issues. -
max_file_size_limit (default: -1)
The maximum allowed file size to format in bytes. For performance reasons, files with a greater file size than the specifiedmax_file_size_limit
will not be formatted. Setting themax_file_size_limit
value to -1 will disable file size checking (default).
Prettier Options
-
useTabs (internally set by the translate_tabs_to_spaces setting)
Indent lines with tabs. -
printWidth (default: 80)
Specifies that the formatted code should fit within this line limit. -
tabWidth (internally set by the tab_size setting)
The number of spaces to use per tab. -
singleQuote (default: false)
If true, code will be formatted using single-quotes, instead of double-quotes. -
trailingComma (default: "none")
Controls the printing of trailing commas wherever possible. Valid options:- "none" – No trailing commas
- "es5" – Trailing commas where valid in ES5 (objects, arrays, etc)
- "all" – Trailing commas wherever possible (function arguments)
-
bracketSpacing (default: true)
Controls the printing of spaces inside object literals. -
jsxBracketSameLine (default: false)
When true, right-angle brackets (">") of multi-line jsx elements will be placed at the end of the last line, instead of being alone on the next line. -
parser (default: "babylon")
Which parser to use. Valid options are "flow", "babylon", "typescript" and "postcss".If CSS or TypeScript is detected in Sublime Text, the parser option will always be internally overridden and set to "postcss" or "typescript" respectively.
-
semi (default: true)
true to add a semicolon at the end of every line, or false to add a semicolon only at the beginning of lines that may introduce ASI failures.
For further details and examples of setting Prettier's options, please see the Prettier API section on the Prettier homepage.
Project-level Settings
JsPrettier supports Project-level settings, specified in
<project_name>.sublime-project
files. In order for Project-level settings to
override the Defaults and User configured settings, a new js_prettier
section
must be created under the project file's settings
section.
Example Sublime Text Project File
{
"folders": [
{
"path": "."
}
],
"settings": {
"js_prettier": {
"debug": false,
"prettier_cli_path": "",
"node_path": "",
"auto_format_on_save": false,
"allow_inline_formatting": false,
"custom_file_extensions": [],
"additional_cli_args": {},
"max_file_size_limit": -1,
"prettier_options": {
"printWidth": 80,
"singleQuote": false,
"trailingComma": "none",
"bracketSpacing": true,
"jsxBracketSameLine": false,
"parser": "babylon",
"semi": true
}
}
}
}
Issues
To report an issue, please follow the steps outlined in the Issue Template.
Changes
Please visit the Changelog page for a complete list of changes.
Author
Jon LaBelle