JSPM

  • Created
  • Published
  • Downloads 213
  • Score
    100M100P100Q81578F
  • License MIT

Yet another configurable linter for TypeScript and JavaScript.

Package Exports

  • ts-standardx
  • ts-standardx/.eslintrc.js

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 (ts-standardx) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

ts-standardx

Yet another configurable linter for TypeScript and JavaScript.

npm GitHub Workflow Status (branch) Codecov branch libera manifesto

๐Ÿš€ Features

Todo

๐Ÿ’พ Install

npm install --save-dev ts-standardx

๐Ÿค– CLI

$ npx ts-standardx

To enable auto fix and format, use --fix.

$ npx ts-standardx --fix

To lint text from stdin, use - or --stdin.

$ echo "const salute = ( ) => 'hi'" | npx ts-standardx -
output

<text>:1:7: 'salute' is assigned a value but never used.
<text>:1:17: Delete `ยท`

Run `ts-standardx --fix` to automatically fix some problems.


Add --fix to output fixed text.

$ echo "const salute = ( ) => 'hi'" | npx ts-standardx - --fix
output

const salute = () => 'hi'

--help

ts-standardx: Yet another customizable linter for TypeScript and JavaScript. (https://github.com/exuanbo/ts-standardx#readme)

Usage: ts-standardx <flags> [FILES...]

  If FILES is omitted, all source files (*.ts, *.tsx, *.js, *.jsx, *.mjs, *.cjs)
  in the current working directory will be checked recursively.

  By default, files/folders that begin with '.' like .eslintrc .cache/
  and paths in the project's root .gitignore are automatically ignored.

Basic:
  --fix                Automatically fix problems
  --verbose            Show rule names for errors (to ignore specific rules)

Config:
  --env                Use custom eslint environment
  --ext                Specify file extensions
  --global             Declare global variable
  --parser             Use custom parser (e.g. babel-eslint)
  --plugin             Use custom eslint plugin

Input:
  --stdin              Read file text from stdin
  --disable-gitignore  Disable use of .gitignore by default

Misc:
  -h, --help           Show usage information
  -v, --version        Show current version

โŒจ๏ธ API

// index.d.ts

import { ProvidedOptions, Linter, CLI } from 'standard-engine-ts'

declare const opts: ProvidedOptions

declare const linter: Linter
declare const cli: CLI

export { cli, linter, opts }

๐Ÿ›  Editor extension

Install the official eslint extension, then add an ESLint configuration file in the project root directory as example below. Your overrides will be deeply merged into the default .eslintrc.js

// .eslintrc.js

const { mergeConfig } = require('standard-engine-ts')
const defaultConfig = require('ts-standardx/.eslintrc.js')

module.exports = mergeConfig(defaultConfig, { /* eslintrc */ })

// Or simply use the default

module.exports = require('ts-standardx/.eslintrc.js')

If you don't like being blamed while coding ๐Ÿคฏ, there is no need to export require('ts-standardx/.eslintrc.js'). Write your .eslintrc.* as usual and it will be merged automatically.

But wait a second...

"So why can't I just use npx eslint . directly?" Yes, you can :p

๐Ÿ”Ž Details

This package includes:

  • @typescript-eslint/eslint-plugin
  • @typescript-eslint/parser
  • eslint
  • eslint-config-prettier
  • eslint-config-standard
  • eslint-config-standard-jsx
  • eslint-plugin-import
  • eslint-plugin-node
  • eslint-plugin-prettier
  • eslint-plugin-promise
  • eslint-plugin-react
  • prettier
  • standard-engine-ts

eslintrc.ts

// https://github.com/exuanbo/ts-standardx/blob/main/src/eslintrc.ts

const PRETTIER_STANDARD = {
  arrowParens: 'avoid',
  bracketSpacing: true,
  jsxBracketSameLine: true,
  semi: false,
  singleQuote: true,
  tabWidth: 2,
  trailingComma: 'none'
}

const eslintrc: Linter.BaseConfig = {
  extends: [
    'standard',
    'standard-jsx',
    'plugin:prettier/recommended',
    'prettier/react',
    'prettier/standard'
  ],
  overrides: isModuleAvailable('typescript')
    ? [
        {
          files: ['**/*.ts', '**/*.tsx'],
          extends: [
            'plugin:@typescript-eslint/recommended',
            'prettier/@typescript-eslint'
          ],
          parser: '@typescript-eslint/parser',
          parserOptions: {
            project: './tsconfig.json'
          },
          rules: {
            ...compatRules,
            ...rules
          }
        }
      ]
    : undefined,
  plugins: ['prettier'],
  rules: {
    'prettier/prettier': ['error', PRETTIER_STANDARD]
  }
}

export default eslintrc

๐Ÿค” Why

Todo

๐Ÿ“ƒ Todo

  • Document
  • Allow specify parserOptions: { project: './tsconfig.json' }
  • Prettier output
  • Better integrate with Prettier

License

MIT License ยฉ 2020 Exuanbo