28
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vueファイル の Auto Format

Last updated at Posted at 2018-10-08

本記事の背景

  • Udemy で Vue.js のコースを受講中
  • VSCode で ファイルを保存すると Auto Format できるようにしたい
  • 他の Qiita の参考記事を見ても中々再現できない
  • 自分なりにやってみる

本記事の目的

vue-cli と ESLint を使って、vue ファイルを Auto Format できる環境を作ること

環境

OS: Windows 10 Pro

前提

参考記事をもとにインストール
必須のものをpick up

事前インストール

  • Visual Studio Code: 1.27.2
  • node.js: v8.11.3
  • Vue: 2.5.17
  • vue-cli: v2.9.6

Visual Studio Code のプラグイン

手順

vue-cli でプロジェクト作成

下記コマンドを実行すること
必要に応じて Yes/No を切り替えること
とりあえず、ESLint は Yes にしましょう
コマンドの処理終了後に sample フォルダが作られます

vue init webpack sample
? Project name sample
? Project description A Vue.js project
? Author hage <xxx@yyy.com>
? Vue build standalone
? Install vue-router? No
? Use ESLint to lint your code? Yes? Pick an ESLint preset Standard
? Set up unit tests No
? Setup e2e tests with Nightwatch? No
? Should we run `npm install` for you after the project has been created? (recommended) npm

# move project folder
cd sample

.eslintrc.js の編集

sample フォルダの直下に「.eslintrc.js」があります
下記をコピーして、Vue の設定を付け加えましょう
prettier のルールはここを見て書くとよい
※ trailingComma は好みが分かれそうですね

// https://eslint.org/docs/user-guide/configuring

module.exports = {
  root: true,
  parserOptions: {
    sourceType: "module",
    parser: "babel-eslint"
  },
  env: {
    browser: true
  },
  extends: ["prettier", "prettier/standard", "plugin:vue/recommended"],
  plugins: ["vue", "prettier"],
  rules: {
    "generator-star-spacing": "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",
    "properties": "always",
    "ignoreDestructuring": false,
    "prettier/prettier": [
      "error",
      {
        trailingComma: "none",
        singleQuote: true,
        semi: false,
        printWidth: 120,
      }
    ]
  }
};

VSCode のワークスペースの設定

sample フォルダの直下に「.vscode」のフォルダを作成
作成したフォルダの中に、下記内容をコピーして「settings.json」を格納

{
  "javascript.format.insertSpaceBeforeFunctionParenthesis": true,
  "typescript.format.insertSpaceBeforeFunctionParenthesis": true,
  "eslint.enable": true,
  "editor.formatOnSave": false,
  "eslint.autoFixOnSave": true,
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    {
      "language": "vue",
      "autoFix": true
    },
    {
      "language": "vue-html",
      "autoFix": true
    }
  ],
  "eslint.run": "onType",
  "vetur.format.defaultFormatter.js": "prettier",
  "vetur.format.defaultFormatter.css": "prettier",
  "vetur.format.defaultFormatter.less": "prettier",
  "vetur.format.defaultFormatter.postcss": "prettier",
  "vetur.format.defaultFormatter.scss": "prettier",
  "vetur.format.defaultFormatter.stylus": "stylus-supremacy",
  "vetur.format.defaultFormatter.ts": "prettier",
  "vetur.validation.style": true,
  "vetur.validation.template": true
}

eslint と prettier の連携

下記を実行すること

npm install eslint-plugin-prettier eslint-config-prettier --save-dev

まとめ

上記手順を実行することで、Vue ファイルを保存したときに Auto Format されます
※うまくいかない場合はコメント下さい

参考

Visual Studio CodeでVue.jsアプリケーションの開発環境を構築する
Formatting Vue.js Code with ESLint & Prettier
Efficient Code Analyzing and Formatting (for Vue.js) with ESLint and Prettier

28
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?