Pepe
Pepe

Reputation: 515

Prettier ask me to replace ⏎↹↹ with ·

I have no clue what's going on,

I cloned a github repo and literally just tried to change like one line but I got hit by this prettier error which makes no sense to me (I've never used prettier).

Replace ↹return·(⏎↹↹<img·alt='logo'·src='./Logo.png'·/>⏎↹); with ··return·<img·alt="logo"·src="./Logo.png"·/> prettier/prettier

Anything could be helpful at this point, I'm using MacOS and working on VSCode

Upvotes: 37

Views: 62003

Answers (12)

manojadams
manojadams

Reputation: 2430

Try using the following settings:

.editorconfig file

indent_style = tab
indent_size = 2

.pretteierrc file

"tabWidth": 2

Note: reopen vscode after updating this setting. Also if you have .eslintrc file, make sure that prettier is included in the extends array like this:

"extends": ["standard",..,"prettier"]

Upvotes: 0

Anjan Talatam
Anjan Talatam

Reputation: 3996

Let's see why we are getting this error.

  1. If you have installed the prettier extension in your VSCode then the default values are set as mentioned here which can be seen by searching prettier in the settings of VSCode as well.

  2. Now if you have enabled formatOnSave in your VSCode the prettier formats your code based on configs from the VSCode.

  3. This error would occur when the configs from the VSCode conflicts from the configs mentioned in .prettierrc.json or .eslintrc.json.

    enter image description here

Ex: Let's say your project is using a printWidth of 100 but the default printWidth is 80. ( Search prettier printwidth in VSCode settings )

In general the spacing errors will be autoCleared ( autoFormatted ) on save by prettier. But in this case that won't work.

Reason: Prettier is sticking to the config ( printWidth: 80 ) which is an error according to Repo's eslintrc/ prettierrc ( printWidth: 100 )

Fix here

  1. Change default VSCode Prettier configs. ❌ -> This would be a bad idea as it will effect all your projects opened in VSCode.

  2. Better way to fix this issue is by adding a .vscode/settings.json in the root directory of the repo.

  3. Add these lines in the settings.json

    {
      "editor.codeActionsOnSave": { "source.fixAll": true },
      "editor.formatOnSave": false,
    } 
    
  4. Now go to files with errors and save the files to format. Files will be formatted according to the configs mentioned in project's eslintrc/ prettierrc

  5. Instead of going to each file you can fix all autofixable problems from the command line as below.

  6. Go to package.json and add this line to your scripts.

    "lint-fix": "eslint --fix 'src/**/*.{js,jsx,ts,tsx,json,css,scss,md}'",

  7. Now in the terminal run npm run lint-fix.

Upvotes: 32

Tony Marfo O
Tony Marfo O

Reputation: 194

This is usually due to some configuration with eslint preventing you from making errors and introducing unwanted characters in your code. I fixed this by running one line eslint --fix . . Make sure you install eslint globally first npm i -g eslint .

Upvotes: 5

Dulanjana Abeyrathna
Dulanjana Abeyrathna

Reputation: 91

Select all, right click, and select format selection

Upvotes: 0

In my case eslint was preventing Prettier to format the file while saving (I have set my VSCode to format the document upon saving).

Due that, Prettier was complaining about tabs / spaces being added when it was not required.

To fix I had to first fix eslint by using the below command(make sure to install the package globally):

eslint --fix

and then I had to Save the files again so Prettier could format them correctly.

Upvotes: 0

Calhau
Calhau

Reputation: 167

You can just set/update this rule in your .eslintrc.js

rules: {
  ...,
  'prettier/prettier': ['error', { printWidth: 120 }],
}

By default, printWidth is 80. ESLint wants to break down the line to match this length requirement that can be overwitten.

Upvotes: 7

sgryt
sgryt

Reputation: 290

I figured the formatting issue (VS Code):

  1. settings.json:

    "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "editor.defaultFormatter": "dbaeumer.vscode-eslint", "editor.formatOnSave": true

  2. .eslintrc.json: "useTabs": false}

  3. .editorconfig: indent_style = space

  4. if esbenp.prettier-vscode is enabled in VSCode - please disable it.

See my complete eslint + prettier setup for this repo: https://github.com/Sgryts/ng2-feature-toggle

Upvotes: 0

jakobinn
jakobinn

Reputation: 2032

For me I had to remove

"extends": "eslint:recommended", 

from the .eslintrc.js file in the project.

Upvotes: 0

Chukwualuka Chiama
Chukwualuka Chiama

Reputation: 338

I think this is caused by Prettier being configured to use spaces instead of tabs to indent and then your code editor using tabs. So Prettier wants you to replace those tabs with spaces.

Alternatively, you can set your code editor to use tabs.

What worked for me was adding this to the rules object in .prettierrc:

{
  "useTabs": false
}

Upvotes: 3

Max Sychov
Max Sychov

Reputation: 1

I added in the .prettierc props "endOfline".

{
  "endOfLine": "lf",
}

By default Windows uses CRLF line separator, so you can cahnge it through a global config of IDE to use LF instad of CRLF

Upvotes: 0

tomstan11
tomstan11

Reputation: 1237

I had the same issue, I changed the tab width inside the prettier formatter extension to the configured size.

Upvotes: 0

Xavier Maldonado
Xavier Maldonado

Reputation: 310

I had the same issue, in the eslinrc.json file under "prettier/prettier", I removed printWidth.

Upvotes: 13

Related Questions