使用 Prettier 在 Vue 模板中保留垂直空格

Posted

技术标签:

【中文标题】使用 Prettier 在 Vue 模板中保留垂直空格【英文标题】:Preserve vertical whitespace in Vue template with Prettier 【发布时间】:2019-04-15 19:41:45 【问题描述】:

我在我的 Vue 项目中使用 eslint-plugin-vue。

我有以下.prettierrc 文件:

// /.prettierrc

  "arrowParens": "avoid",
  "bracketSpacing": true,
  "insertPragma": false,
  "jsxBracketSameLine": false,
  "printWidth": 80,
  "proseWrap": "preserve",
  "requirePragma": false,
  "semi": false,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "es5",
  "useTabs": false

还有以下.eslintrc.js文件:

module.exports = 
  root: true,
  env: 
    node: true,
  ,
  extends: [
    'plugin:vue/recommended',
    '@vue/prettier',
  ],
  rules: 
    'linebreak-style': ['error', 'unix'],
    'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'vue/max-attributes-per-line': 'off',
    'vue/html-self-closing': [
      'error',
      
        html: 
          void: 'always',
          normal: 'always',
          component: 'always',
        ,
        svg: 'always',
        math: 'always',
      ,
    ],
  ,
  plugins: ['vue'],
  parserOptions: 
    parser: 'babel-eslint',
  ,

但不幸的是,prettier 认为

<template>
  <header><a href="/" class="logo"> Home </a></header>
</template>

<template>
  <header>
    <a href="/" class="logo">
      Home
    </a>
  </header>
</template>


如何告诉 prettier 在 Vue 模板中保留垂直空白?

有没有类似我想要的规则?

【问题讨论】:

【参考方案1】:

这里是 eslint 中 vue 的规则列表:https://vuejs.github.io/eslint-plugin-vue/rules/ 但是,如果您禁用某个规则,那么它将应用于您的所有代码。

另外,您似乎可以告诉 Prettier 忽略一个块:https://prettier.io/docs/en/ignore.html#html

此外,我认为这更“可读”,但这是我的观点 :)

<template>
  <header>
    <a href="/" class="logo">Home</a>
  </header>
</template>

【讨论】:

【参考方案2】:

您唯一的选择(解决方法)是使用忽略。

Ex Js 文件。 // prettier-ignore 例如 Html 文件。 &lt;!-- prettier-ignore --&gt;

https://prettier.io/docs/en/ignore.html

【讨论】:

以上是关于使用 Prettier 在 Vue 模板中保留垂直空格的主要内容,如果未能解决你的问题,请参考以下文章

使用 Prettier JS 时保留 then() catch() 格式

vue+eslint项目(项目已开发)使用prettier

Vue项目中使用ellint和prettier-规范和约束我们的代码

Vue项目中使用ellint和prettier-规范和约束我们的代码

如何将 vue.js 模板分离到 .vue 文件中,同时将代码保留在 .js 中?

Laravel vue - 错误删除 `␍` prettier/prettier ,可能可以使用 `--fix` 选项修复