
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
@btmills/prettier
Advanced tools
Compared to prettier
, @btmills/prettier
moves binary operators to the beginning of new lines in long expressions instead of the end of the previous line. That's it.
// Before:
const before =
bom.length >= 2 &&
((bom.charCodeAt(0) === 0xff && bom.charCodeAt(1) === 0xfe) ||
(bom.charCodeAt(0) === 0xfe && bom.charCodeAt(1) === 0xff));
// After:
const after =
bom.length >= 2
&& ((bom.charCodeAt(0) === 0xff && bom.charCodeAt(1) === 0xfe)
|| (bom.charCodeAt(0) === 0xfe && bom.charCodeAt(1) === 0xff));
If you use Yarn, you can install using an alias so that require('prettier')
transparently resolves to this fork:
$ yarn add -D prettier@npm:@btmills/prettier
Releases of the forked package are done by rebasing the line-before-operator
branch on top of the most recent version tag in master
.
# Get the latest changes and update the master branch
$ git checkout master
$ git pull
$ git push fork
# Rebase the release branch on the latest version
$ git checkout line-before-operator
$ git rebase x.y.z
# Fix conflicts as necessary
$ git rebase --continue
# Update packages to give accurate test results
$ yarn install
# If any conflicts in snapshots, discard and update automatically
$ yarn test -u
# With rebasing done, run tests, push tags, build, and publish
$ yarn test
$ git tag x.y.z-fork
$ git push --force-with-lease
$ git push --tags
$ yarn run build
$ yarn run test:dist
$ cd dist
$ npm publish
JavaScript
· TypeScript
· Flow
· JSX
· JSON
CSS
· SCSS
· Less
HTML
· Vue
· Angular
GraphQL
· Markdown
· YAML
Your favorite language?
Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.
foo(reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne());
foo(
reallyLongArg(),
omgSoManyParameters(),
IShouldRefactorThis(),
isThereSeriouslyAnotherOne()
);
Prettier can be run in your editor on-save, in a pre-commit hook, or in CI environments to ensure your codebase has a consistent style without devs ever having to post a nit-picky comment on a code review ever again!
Show the world you're using Prettier →
[](https://github.com/prettier/prettier)
See CONTRIBUTING.md.
1.17.1
Range: Fix ranged formatting not using the correct line width ([#6050] by [@mathieulj])
<!-- prettier-ignore -->// Input
function f() {
if (true) {
call("this line is 79 chars", "long", "it should", "stay as single line");
}
}
// Output (Prettier 1.17.0 run with --range-start 30 --range-end 110)
function f() {
if (true) {
call(
"this line is 79 chars",
"long",
"it should",
"stay as single line"
);
}
}
// Output (Prettier 1.17.0 run without range)
function f() {
if (true) {
call("this line is 79 chars", "long", "it should", "stay as single line");
}
}
// Output (Prettier 1.17.1 with and without range)
function f() {
if (true) {
call("this line is 79 chars", "long", "it should", "stay as single line");
}
}
JavaScript: Fix closure compiler typecasts ([#5947] by [@jridgewell])
If a closing parenthesis follows after a typecast in an inner expression, the typecast would wrap everything to the that following parenthesis.
<!-- prettier-ignore -->// Input
test(/** @type {!Array} */(arrOrString).length);
test(/** @type {!Array} */((arrOrString)).length + 1);
// Output (Prettier 1.17.0)
test(/** @type {!Array} */ (arrOrString.length));
test(/** @type {!Array} */ (arrOrString.length + 1));
// Output (Prettier 1.17.1)
test(/** @type {!Array} */ (arrOrString).length);
test(/** @type {!Array} */ (arrOrString).length + 1);
JavaScript: respect parenthesis around optional chaining before await ([#6087] by [@evilebottnawi])
<!-- prettier-ignore -->// Input
async function myFunction() {
var x = (await foo.bar.blah)?.hi;
}
// Output (Prettier 1.17.0)
async function myFunction() {
var x = await foo.bar.blah?.hi;
}
// Output (Prettier 1.17.1)
async function myFunction() {
var x = (await foo.bar.blah)?.hi;
}
Handlebars: Fix {{else}}{{#if}} into {{else if}} merging ([#6080] by [@dcyriller])
<!-- prettier-ignore -->// Input
{{#if a}}
a
{{else}}
{{#if c}}
c
{{/if}}
e
{{/if}}
// Output (Prettier 1.17.0)
{{#if a}}
a
{{else if c}}
c
e
{{/if}}
// Output (Prettier 1.17.1)
Code Sample
{{#if a}}
a
{{else}}
{{#if c}}
c
{{/if}}
e
{{/if}}
JavaScript: Improved multiline closure compiler typecast comment detection ([#6070] by [@yangsu])
Previously, multiline closure compiler typecast comments with lines that start with * weren't flagged correctly and the subsequent parenthesis were stripped. Prettier 1.17.1 fixes this issue.
<!-- prettier-ignore -->// Input
const style =/**
* @type {{
* width: number,
* }}
*/({
width,
});
// Output (Prettier 1.17.0)
const style =/**
* @type {{
* width: number,
* }}
*/ {
width,
};
// Output (Prettier 1.17.1)
const style =/**
* @type {{
* width: number,
* }}
*/({
width,
});
FAQs
Prettier is an opinionated code formatter
The npm package @btmills/prettier receives a total of 9,172 weekly downloads. As such, @btmills/prettier popularity was classified as popular.
We found that @btmills/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
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.