4

很长一段时间以来,我都遇到了Prettier和Vue.js 的一个特殊问题。似乎没有解决方案,所以我在这里发布一个问题作为最后的手段。如果您的 HTML 代码嵌套较深,并且您printWidth在 Prettier 中启用了属性(默认情况下启用),则会发生此问题。

Prettier 2.1.2 Playground 链接

--parser vue

输入:

<template>
  <div>
    <div>
      <div>
        <div>
          <div>
            <ol>
              <li>
                <router-link class="xyz-class abc-class" to="/home">Home</router-link>
              </li>
              <li>
                <router-link class="xyz-class abc-class" to="/posts">Posts</router-link>
              </li>
            </ol>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

输出:

<template>
  <div>
    <div>
      <div>
        <div>
          <div>
            <ol>
              <li>
                <router-link class="xyz-class abc-class" to="/home"
                  >Home</router-link
                >
              </li>
              <li>
                <router-link class="xyz-class abc-class" to="/posts"
                  >Posts</router-link
                >
              </li>
            </ol>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

预期行为:

在我看来,这些中的任何一个都会更好更整洁。

<template>
  <div>
    <div>
      <div>
        <div>
          <div>
            <ol>
              <li>
                <router-link class="xyz-class abc-class" to="/home">
                  Home
                </router-link>
              </li>
              <li>
                <router-link class="xyz-class abc-class" to="/posts">
                  Posts
                </router-link>
              </li>
            </ol>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

或者

<template>
  <div>
    <div>
      <div>
        <div>
          <div>
            <ol>
              <li>
                <router-link
                  class="xyz-class abc-class"
                  to="/home"
                >Home</router-link>
              </li>
              <li>
                <router-link
                  class="xyz-class abc-class"
                  to="/posts"
                >Posts</router-link>
              </li>
            </ol>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

我在这里错过了一些可以禁用/启用以防止这种情况的选项吗?如果有,请指导。

4

1 回答 1

4

我找到了解决这个问题的方法。留给通过搜索登陆这里的人。

将选项设置--html-whitespace-sensitivityignore,您将获得以下输出:

<template>
  <div>
    <div>
      <div>
        <div>
          <div>
            <ol>
              <li>
                <router-link class="xyz-class abc-class" to="/home">
                  Home
                </router-link>
              </li>
              <li>
                <router-link class="xyz-class abc-class" to="/posts">
                  Posts
                </router-link>
              </li>
            </ol>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

尽管不建议这样做,因为空白格式可能会导致文本和内容周围的额外间距等问题,这可能会影响您的 UI 设计的一致性。

有关此的更多信息:https ://prettier.io/blog/2018/11/07/1.15.0.html#whitespace-sensitive-formatting


感谢 GitHub 上的回复:https ://github.com/prettier/prettier/issues/9381#issuecomment-707156908

于 2020-10-13T06:19:26.107 回答