You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Pass in a string of any kind of text and get the indentation.
Use cases
Persisting the indentation when modifying a file.
Have new content match the existing indentation.
Setting the right indentation in your editor.
Install
npm install detect-indent
Usage
Here we modify a JSON file while persisting the indentation:
importfsfrom'node:fs';importdetectIndentfrom'detect-indent';/*{ "ilove": "pizza"}*/constfile=fs.readFileSync('foo.json','utf8');// Tries to detect the indentation and falls back to a default if it can'tconstindent=detectIndent(file).indent||' ';constjson=JSON.parse(file);json.ilove='unicorns';fs.writeFileSync('foo.json',JSON.stringify(json,undefined,indent));/*{ "ilove": "unicorns"}*/
API
Accepts a string and returns an object with stats about the indentation:
type {'tab' | 'space' | undefined} - The type of indentation. It is undefined if no indentation is detected.
amount {number} - The amount of indentation. For example, 2.
indent {string} - The actual indentation.
Algorithm
The current algorithm looks for the most common difference between two consecutive non-empty lines. Single-space indentations and changes are ignored by default to prevent common false positives from comment alignment.
In the following example, even if 4-space indentation appears 3 times while 2-space appears only 2 times, the 2-space indentation is detected because there are 4 indent changes of 2 spaces vs only 2 changes of 4 spaces:
html {
box-sizing: border-box;
}
body {
background: gray;
}
p {
line-height:1.3em;
margin-top:1em;
text-indent:2em;
}