zukucode
主にWEB関連の情報を技術メモとして発信しています。

vscodeのサブディレクトリのプロジェクトでveturが機能しないときの対処法

vscodeのサブディレクトリのプロジェクトでveturが機能しないときの対処法を紹介します。

例えば、以下のようなフォルダ構成でvueTypeScriptのプロジェクトを作成したときに、vueファイルのthisがすべてanyになってしまう現象がありました。

  • root
    • App
    • Web
      • ClientApp
        • src
          • App.vue
        • package.json
        • tsconfig

vetur公式ページを参考に、プロジェクトのルートディレクトリの直下にvetur.config.jsファイルを追加します。

  • root
    • App
    • Web
      • ClientApp
        • src
          • App.vue
        • package.json
        • tsconfig
    • vetur.config.js ←追加

vetur.config.jsの中身は以下のようにします。

.vetur.config.js
// vetur.config.js
/** @type {import('vls').VeturConfig} */
module.exports = {
  // **optional** default: `{}`
  // override vscode settings
  // Notice: It only affects the settings used by Vetur.
  settings: {
    "vetur.useWorkspaceDependencies": true,
    "vetur.experimental.templateInterpolationService": true
  },
  // **optional** default: `[{ root: './' }]`
  // support monorepos
  projects: [
    {
      // **required**
      // Where is your project?
      // It is relative to `vetur.config.js`.
      root: './Web/ClientApp', // ←ここをvueプロジェクトのフォルダに合わせる
      // **optional** default: `'package.json'`
      // Where is `package.json` in the project?
      // We use it to determine the version of vue.
      // It is relative to root property.
      package: './package.json',
      // **optional**
      // Where is TypeScript config file in the project?
      // It is relative to root property.
      tsconfig: './tsconfig.json',
      // **optional** default: `'./.vscode/vetur/snippets'`
      // Where is vetur custom snippets folders?
      snippetFolder: './.vscode/vetur/snippets',
      // **optional** default: `[]`
      // Register globally Vue component glob.
      // If you set it, you can get completion by that components.
      // It is relative to root property.
      // Notice: It won't actually do it. You need to use `require.context` or `Vue.component`
      globalComponents: [
      ]
    }
  ]
}

関連記事