Formatter of TypeScript code





A TypeScript code formatter powered by TypeScript Compiler Service.
``bash
$ tsfmt --help
Usage: tsfmt [options] [--] [files...]
Options:
-r, --replace replace .ts file
--verify checking file format
--baseDir
--stdin get formatting content from stdin
--no-tsconfig don't read a tsconfig.json
--no-tslint don't read a tslint.json
--no-editorconfig don't read a .editorconfig
--no-vscode don't read a .vscode/settings.json
--no-tsfmt don't read a tsfmt.json
--useTsconfig
--useTslint
--useTsfmt
--verbose makes output more verbose
`
`npm install -g typescript-formatter`
`bash`
$ cat sample.ts
class Sample {hello(word="world"){return "Hello, "+word;}}
new Sample().hello("TypeScript");
`bash`basic. read file, output to stdout.
$ tsfmt sample.ts
class Sample { hello(word = "world") { return "Hello, " + word; } }
new Sample().hello("TypeScript");
`bash`from stdin. read from stdin, output to stdout.
$ cat sample.ts | tsfmt --stdin
class Sample { hello(word = "world") { return "Hello, " + word; } }
new Sample().hello("TypeScript");
`bash`replace. read file, and replace file.
$ tsfmt -r sample.ts
replaced sample.ts
$ cat sample.ts
class Sample { hello(word = "world") { return "Hello, " + word; } }
new Sample().hello("TypeScript");
`bash`verify. checking file format.
$ tsfmt --verify sample.ts
sample.ts is not formatted
$ echo $?
1
If no files are specified on the command line but
a TypeScript project file (tsconfig.json) exists,
the list of files will be read from the project file.
`bash`reads list of files to format from tsconfig.json
tsfmt -r
1st. Read settings from tsfmt.json. Below is the example with default values:
`json`
{
"baseIndentSize": 0,
"indentSize": 4,
"tabSize": 4,
"indentStyle": 2,
"newLineCharacter": "\r\n",
"convertTabsToSpaces": true,
"insertSpaceAfterCommaDelimiter": true,
"insertSpaceAfterSemicolonInForStatements": true,
"insertSpaceBeforeAndAfterBinaryOperators": true,
"insertSpaceAfterConstructor": false,
"insertSpaceAfterKeywordsInControlFlowStatements": true,
"insertSpaceAfterFunctionKeywordForAnonymousFunctions": false,
"insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": false,
"insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": false,
"insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": true,
"insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": false,
"insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": false,
"insertSpaceAfterTypeAssertion": false,
"insertSpaceBeforeFunctionParenthesis": false,
"insertSpaceBeforeTypeAnnotation": true,
"placeOpenBraceOnNewLineForFunctions": false,
"placeOpenBraceOnNewLineForControlBlocks": false
}
2nd. Read settings from tsconfig.json (tsconfig.json)
`text`
{
"compilerOptions": {
"newLine": "LF"
}
}
3rd. Read settings from .editorconfig (editorconfig)
`textEditorConfig is awesome: http://EditorConfig.org
4th. Read settings from tslint.json (tslint)
`json
{
"rules": {
"indent": [true, 4],
"whitespace": [true,
"check-branch",
"check-operator",
"check-separator",
"check-typecast"
]
}
}
`5th. Read settings from .vscode/settings.json (VisualStudio Code)
`json
{
// Place your settings in this file to overwrite default and user settings.
"typescript.format.enable": true,
"typescript.format.insertSpaceAfterCommaDelimiter": true,
"typescript.format.insertSpaceAfterSemicolonInForStatements": true,
"typescript.format.insertSpaceBeforeAndAfterBinaryOperators": true,
"typescript.format.insertSpaceAfterKeywordsInControlFlowStatements": true,
"typescript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": false,
"typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": false,
"typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": false,
"typescript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": false,
"typescript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": false,
"typescript.format.placeOpenBraceOnNewLineForFunctions": false,
"typescript.format.placeOpenBraceOnNewLineForControlBlocks": false
}
`$3
`
$ tree -a
.
├── .vscode
│ └── settings.json
├── foo
│ ├── bar
│ │ ├── .editorconfig
│ │ └── buzz.ts
│ ├── fuga
│ │ ├── piyo.ts
│ │ └── tsfmt.json
│ └── tsfmt.json
└── tslint.json4 directories, 7 files
`1. exec
$ tsfmt -r foo/bar/buzz.ts foo/fuga/piyo.ts`See CHANGELOG