Security News
PyPI Introduces Digital Attestations to Strengthen Python Package Security
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
This is a JavaScript pretty-printer that is opinionated. All it takes is a width to format the code to and it does the rest. Zero config: it just works! Integrate this into your editor to get immediate feedback, or run it across an entire project to forma
Prettier is an opinionated code formatter that supports many languages and integrates with most editors. It removes all original styling and ensures that all outputted code conforms to a consistent style.
Code Formatting
Formats all .js files in the src directory and its subdirectories. When run, this command will process each JavaScript file and reformat it according to Prettier's rules.
prettier --write 'src/**/*.js'
Configuration Overrides
Allows customization of Prettier's default formatting rules. For example, this JSON configuration disables semicolons at the end of statements and enforces single quotes.
{
'semi': false,
'singleQuote': true
}
Ignoring Code
You can prevent a section of code from being formatted by Prettier by adding a special comment, `// prettier-ignore`, before it.
// prettier-ignore
let untouched = 'This code will not be formatted by Prettier.';
Integration with Editors
Prettier can be integrated into many code editors to automatically format files on save or during editing, enhancing the developer's workflow.
N/A
Support for Multiple Languages
Prettier supports a wide range of languages and frameworks, including but not limited to JavaScript, TypeScript, CSS, HTML, and Markdown, making it a versatile tool for many developers.
N/A
ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code, with the ability to fix many issues automatically. While it can also format code, its primary focus is on code quality and adherence to coding standards, unlike Prettier which is solely focused on code formatting.
Stylelint is a modern linter that helps you avoid errors and enforce conventions in your stylesheets. It is to CSS what ESLint is to JavaScript, and while it can fix code style issues, it is more focused on maintaining code quality rather than just formatting.
Beautify, available as 'js-beautify' for npm, is a code beautifier that can format HTML, CSS, and JavaScript. It is less opinionated than Prettier and offers more configuration options, but it might not enforce as consistent a style as Prettier does.
Standard is a JavaScript style guide, linter, and formatter that enforces a strict coding standard. Unlike Prettier, Standard also includes rules that aim to prevent bugs and improve code clarity.
This is a JavaScript pretty-printer that is opinionated. All it takes is a width to format the code to and it does the rest. Zero config: it just works! Integrate this into your editor to get immediate feedback, or run it across an entire project to format all your files.
This is a fork of recast's printer because it already handles a lot of edge cases like handling comments. The core algorithm has been rewritten to be based on Wadler's "A prettier printer" paper, however. Recast also supported only re-printing nodes that changed from a transformation, but we avoid that and always pretty-print the entire AST so it's always consistent.
That paper allows a flexible formatting that will break expressions across lines if they get too big. This means you can sloppily write code as you need and just format it, and it will always produce consistent output.
The core of the algorithm is implemented in pp.js
. The printer should
use the basic formatting abstractions provided to construct a format
when printing a node. Parts of the API only exist to be compatible
with recast's previous API to ease migration, but over time we can
clean it up.
The following commands are available:
Combine an array into a single string.
Mark a group of items which the printer should try to fit on one line. This is the basic command to tell the printer when to break. Groups are usually nested, and the printer will try to fit everything on one line, but if it doesn't fit it will break the outermost group first and try again. It will continue breaking groups until everything fits (or there are no more groups to break).
This is the same as group
, but with an additional behavior: if this
group spans any other groups that have hard breaks (see below) this
group always breaks. Otherwise it acts the same as group
.
For example, an array will try to fit on one line:
[1, "foo", { bar: 2 }]
However, if any of the items inside the array have a hard break, the array will always break as well:
[
1,
function() {
return 2
},
3
]
Functions always break after the opening curly brace no matter what,
so the array breaks as well for consistent formatting. See the
implementation of ArrayExpression
for an example.
Join an array of items with a separator.
Specify a line break. If an expression fits on one line, the line break will be replaced with a space. Line breaks always indent the next line with the current level of indentation.
Specify a line break. The difference from line
is that if the
expression fits on one line, it will be replaced with nothing.
Specify a line break that is always included in the output, no matter if the expression fits on one line or not.
Specify a line break that is always included in the output, and don't indent the next line. This is used for template literals.
Increase the level of indentation.
For an example, here's the implementation of the ArrayExpression
node type:
return multilineGroup(concat([
"[",
indent(options.tabWidth,
concat([
line,
join(concat([",", line]),
path.map(print, "elements"))
])),
line,
"]"
]));
This is a group with opening and closing brackets, and possibly
indented contents. Because it's a multilineGroup
it will always be
broken up if any of the sub-expressions are broken.
There is a lot to do:
\n
in the printer; there should be no uses of it
because we use line
instead. For example see
DoWhileStatement
.$ git clone https://github.com/jlongster/jscodefmt.git
$ cd jscodefmt
$ npm install
$ ./bin/jscodefmt file.js
A few snapshot tests are currently implemented. See tests
. To run
the tests simply run npm test
in the root directory.
It's most useful when integrated with your editor, so see editors
for
editor support. Atom and Emacs is currently supported.
More docs on editor integration will come soon. To integrate in Emacs, add the following code. This will format the file when saved.
(require 'jscodefmt)
(add-hook 'js-mode-hook
(lambda ()
(add-hook 'before-save-hook 'jscodefmt-before-save)))
FAQs
Prettier is an opinionated code formatter
The npm package prettier receives a total of 24,089,349 weekly downloads. As such, prettier popularity was classified as popular.
We found that prettier demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.