简体   繁体   English

eslint object-curly-newline 冲突更漂亮的多行基本原理

[英]eslint object-curly-newline conflicts prettier multi-line rationale

I'm new in prettier + typescript + eslint.我是漂亮 + 打字稿 + eslint 的新手。 Most of the integration works fine but multi-line in destructure object is not.大多数集成工作正常,但解构对象中的多行则不然。

Prettier 1.19.1 Playground link Prettier 1.19.1 游乐场链接

Input:输入:

const {
  ciq,
  drawingMenuX,
  drawingMenuY,
  selectedDrawing,
} = store.chartStore;

Output:输出:

const { ciq, drawingMenuX, drawingMenuY, selectedDrawing } = store.chartStore;

Expected behavior:预期行为:

const {
  ciq,
  drawingMenuX,
  drawingMenuY,
  selectedDrawing,
} = store.chartStore;

I wanna keep a multiline format in destructure object like the rationale ( https://prettier.io/docs/en/rationale.html#multi-line-objects )我想在像基本原理一样的解构对象中保留多行格式( https://prettier.io/docs/en/rationale.html#multi-line-objects

It works well in a normal object but it's not in destructure object它适用于普通对象,但不适用于解构对象

How can I fix this problem?我该如何解决这个问题? Do I just have to fix each line?我只需要修复每一行吗?

package.json包.json

"@typescript-eslint/eslint-plugin": "^2.11.0",
"@typescript-eslint/parser": "^2.11.0",
"eslint": "^6.7.2",
"eslint-config-airbnb": "^18.0.1",
"eslint-config-prettier": "^6.7.0",
"eslint-plugin-import": "^2.19.1",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-prettier": "^3.1.1",
"eslint-plugin-react": "^7.17.0",
"eslint-plugin-react-hooks": "^1.7.0",
"prettier": "^1.19.1",

.eslintrc.js .eslintrc.js

module.exports = {
  env: {
    browser: true,
    es6: true,
  },
  extends: ['plugin:react/recommended', 'plugin:prettier/recommended', 'airbnb'],
  plugins: ['react', '@typescript-eslint'],
  globals: {
    Atomics: 'readonly',
    SharedArrayBuffer: 'readonly',
  },
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaFeatures: {
      jsx: true,
    },
    ecmaVersion: 2018,
    sourceType: 'module',
  },
  settings: {
    'import/resolver': {
      node: {
        extensions: ['.js', '.jsx', '.ts', '.tsx'],
      },
    },
  },
  rules: {
    'react/jsx-filename-extension': [
      1,
      {
        extensions: ['.js', '.jsx', '.ts', '.tsx'],
      },
    ],

    'import/extensions': [
      'error',
      'ignorePackages',
      {
        js: 'never',
        jsx: 'never',
        ts: 'never',
        tsx: 'never',
      },
    ],

    'no-confusing-arrow': [0],
  },

  overrides: [
    {
      files: ['*.ts', '*.tsx'],
      rules: {
        '@typescript-eslint/no-unused-vars': [2, { args: 'none' }],
      },
    },
  ],
};

I prefer the way Prettier handles this as well.我也更喜欢 Prettier 处理这个问题的方式。

In your .eslintrc.js add this to your rules .在您的.eslintrc.js添加到您的rules

'object-curly-newline': 'off',

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM