Skip to content

vvakame/typescript-formatter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d0f2719 · Sep 22, 2015
Mar 27, 2014
Sep 20, 2015
Sep 22, 2015
Sep 22, 2015
Feb 18, 2015
Sep 20, 2015
Sep 20, 2015
Aug 4, 2015
Sep 20, 2015
Sep 22, 2015
Feb 14, 2015
Sep 22, 2015
Sep 20, 2015
Feb 18, 2015
Sep 22, 2015
Sep 22, 2015
Mar 23, 2014
Sep 22, 2015

Repository files navigation

TypeScript Formatter (tsfmt) Build Status Dependency Status

A TypeScript code formatter powered by TypeScript Compiler Service.

$ tsfmt --help
  Usage: tsfmt [options] [--] [files...]

  Options:

    -r, --replace      replace .ts file
    --verify           checking file format
    --baseDir <path>   config file lookup from <path>
    --stdin            get formatting content from stdin
    --no-tslint        don't read a tslint.json
    --no-editorconfig  don't read a .editorconfig
    --no-tsfmt         don't read a tsfmt.json
    --verbose          makes output more verbose

Installation

npm install -g typescript-formatter

Usage

Format or verify specific TypeScript files

$ cat sample.ts
class Sample {hello(word="world"){return "Hello, "+word;}}
new Sample().hello("TypeScript");
# basic. read file, output to stdout.
$ tsfmt sample.ts
class Sample { hello(word= "world") { return "Hello, " + word; } }
new Sample().hello("TypeScript");
# 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");
# 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");
# verify. checking file format.
$ tsfmt --verify sample.ts
sample.ts is not formatted
$ echo $?
1

Reformat all files in a TypeScript project

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.

# reads list of files to format from tsconfig.json
tsfmt -r

Note

now indentSize parameter is ignored. it is TypeScript compiler matters.

Read Settings From Files

1st. Read settings from tsfmt.json.

{
  "indentSize": 4,
  "tabSize": 4,
  "newLineCharacter": "\r\n",
  "convertTabsToSpaces": true,
  "insertSpaceAfterCommaDelimiter": true,
  "insertSpaceAfterSemicolonInForStatements": true,
  "insertSpaceBeforeAndAfterBinaryOperators": true,
  "insertSpaceAfterKeywordsInControlFlowStatements": true,
  "insertSpaceAfterFunctionKeywordForAnonymousFunctions": false,
  "insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": false,
  "insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": false,
  "placeOpenBraceOnNewLineForFunctions": false,
  "placeOpenBraceOnNewLineForControlBlocks": false
}

2nd. Read settings from .editorconfig (editorconfig)

# EditorConfig is awesome: http://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
indent_style = tab
tab_width = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

3rd. Read settings from tslint.json (tslint)

{
  "rules": {
    "indent": [true, 4]
    "whitespace": [true,
      "check-branch",
      "check-operator",
      "check-separator"
    ]
  }
}

Read Settings Rules

$ tree -a
.
├── foo
│   ├── bar
│   │   ├── .editorconfig
│   │   └── buzz.ts
│   ├── fuga
│   │   ├── piyo.ts
│   │   └── tsfmt.json
│   └── tsfmt.json
└── tslint.json

3 directories, 6 files
  1. exec $ tsfmt -r foo/bar/buzz.ts foo/fuga/piyo.ts
  2. for foo/bar/buzz.ts, read foo/tsfmt.json and foo/bar/.editorcondig and ./tslint.json
  3. for foo/fuga/piyo.ts, read foo/fuga/tsfmt.json and ./tslint.json

Change log

See CHANGELOG