форматирование стилуса в VUE-файлах с помощью VSCode - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть файл vue, составленный следующим образом (не очень важно):

<template>
    //some pseudo-html
</template>

<script>
    //some javascript
</script>

<style lang='stylus'>
  @import '~variables'
  .card
    cursor pointer
    //some more stylus
</style>

В VSCode активирован formatOnSave, у меня также установлены vetur и esLint.

КогдаЯ использую код CSS внутри классического тега <style>, у меня нет проблем, но когда я использую lang='stylus', ESLint все еще ищет CSS (я получаю синтаксические ошибки, такие как [css] { expected (css-lcurlyexpected)).

Также,автоформат при сохранении просто испортит все, когда я использую стилус, он помещает все в одну строку.Результат после сохранения:

<style lang='stylus'>
  @import '~variables'
  .card cursor pointer position relative padding //some more stylus
</style>

Я пытался изменить настройки followinf в vscode:

vetur.format.defaultFormatter.css vetur.format.defaultFormatter.stylus

, но безрезультатно.

Мои текущие настройки:

{
  "workbench.colorTheme": "FlatUI Immersed",
  "workbench.iconTheme": "material-icon-theme",
  "files.trimTrailingWhitespace": true,
  "editor.insertSpaces": true,
  "editor.formatOnSave": true,
  "editor.detectIndentation": false,
  "editor.formatOnPaste": false,
  "editor.formatOnType": true,
  "editor.renderControlCharacters": true,
  "editor.renderWhitespace": "all",
  "editor.minimap.enabled": false,
  "editor.mouseWheelScrollSensitivity": 2,
  "editor.tabSize": 4,
  "editor.fontSize": 15,
  "window.zoomLevel": -1,
  "workbench.startupEditor": "newUntitledFile",
  "markdown.extension.preview.autoShowPreviewToSide": true,
  "markdown.preview.breaks": true,
}

И настройки, специфичные для рабочей области:

"settings": {
    "files.associations": {
      "*.vue": "html"
    },
    "editor.tabSize": 2,
    "editor.formatOnSave": true,
    // Defines space handling before function argument parentheses. Requires TypeScript >= 2.1.5.
    "typescript.format.insertSpaceBeforeFunctionParenthesis": true,
    // Defines space handling before function argument parentheses. Requires TypeScript >= 2.1.5.
    "javascript.format.insertSpaceBeforeFunctionParenthesis": true,
    // Eslint options
    "eslint.enable": true,
    "eslint.options": {
      "extensions": [
        ".html",
        ".js",
        ".vue",
        ".jsx"
      ]
    },
    // An array of language ids which should be validated by ESLint
    "eslint.validate": [
      "javascript",
      "javascriptreact",
      {
        "language": "html",
        "autoFix": true
      }
    ],
    // Run the linter on save (onSave) or on type (onType)
    "eslint.run": "onSave",
    // Turns auto fix on save on or off.
    "eslint.autoFixOnSave": true,
  }

Было бы совершенно замечательно, если бы кто-то знал, как правильно использовать форматтер и линтер, принимая это во внимание, но после 2 часов копания я бы честно согласился на способ отключить форматтер и линтер только для тега <style>.

1 Ответ

0 голосов
/ 21 сентября 2018

Итак, покопавшись еще, я нашел решение:

удалите эту часть настроек:

"files.associations": {
    "*.vue": "html"
 },

И замените html на vue в этой части:

"eslint.validate": [
   "javascript",
   "javascriptreact",
   {
     "language": "vue",
     "autoFix": true
   }
 ],

А также добавить:

"vetur.format.defaultFormatter.js": "none"
...