JSPM

  • Created
  • Published
  • Downloads 39892
  • Score
    100M100P100Q152357F
  • License MIT

Formatter of TypeScript code

Package Exports

  • typescript-formatter
  • typescript-formatter/lib/formatter

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (typescript-formatter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

TypeScript Formatter (tsfmt) Build Status Dependency Status

A TypeScript code formatter powered by TypeScript Compiler Service.

$ tsfmt

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

  Options:

    -r, --replace      replace .ts file
    --verify           checking file format
    --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

$ 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

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,
  "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