これはなに
Vuetify 3で作成したWebアプリにPrettier, StyleLintの3つを追加する方法を記したもの。 eslint-plugin-prettierが非推奨になったため、eslint-plugin-prettierと@vue/eslint-config-prettierは使わないようにした。
環境
Vuetifyでアプリを作成した際に、一緒にTypeScriptとESLintを入れた想定。
- Vuetify 3.0.6
- VS Code
Prettierを導入する
必要なパッケージをインストールする。
yarn add -D prettier eslint-config-prettier eslint-config-prettier-vue
インストールしたパッケージの詳細は下記の通りである。
パッケージ名 | 説明 |
---|---|
prettier | Prettierの本体 |
eslint-config-prettier | Prettierと競合するESLintの設定を無効化するconfig |
eslint-config-prettier-vue | Prettierと競合するESLintの設定を無効化するVue用config |
ESLintの設定ファイル.eslintrc.jsに、Prettier用の設定を追加する。
これを追加することで、ESLintとPrettierの住み分けができる。
必ずextends
の一番最後にいれること。
module.exports = {
root: true,
env: {
node: true,
},
extends: [
"plugin:vue/vue3-recommended",
"eslint:recommended",
"@vue/eslint-config-typescript",
+ "prettier",
],
rules: {
"vue/multi-word-component-names": "off",
},
};
Prettierの設定ファイルである.prettierrc.jsonを作成し、任意のオプションを設定する。 設定できるオプションの詳細はPrettier公式 を参照してほしい。 下記に例を示す。
{
"printWidth": 80,
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"vueIndentScriptAndStyle": true
}
package.jsonにformatコマンドを追加。 lintコマンドと同時に動かすfixコマンドも追加する。
{
"scripts": {
"lint": "eslint . --fix --ignore-path .gitignore",
"format": "yarn prettier -w -u .",
"fix": "yarn format && yarn lint"
},
}
とりあえず動くか試す。
yarn format
yarn fix
VS Codeの場合はPrettierの拡張機能 を追加し、 config.jsonに下記を追記する。 そうするとVS Code側で保存時に自動で実行してくれる。
{
// formatter
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.formatOnType": true,
"prettier.requireConfig": true,
"prettier.configPath": "./app/.prettierrc.json",
"prettier.prettierPath": "./app/node_modules/prettier",
}
VS Codeの場合、Prettierを入れた直後はESLintとバッティングしてうまく動作しないことがある。 その場合は、一度VS Codeを再起動する。
StyleLintを導入する
StyleLintを導入して、cssやvueファイル内の<style>
タグもlintする。
必要なパッケージをインストールする。
yarn add -D stylelint postcss-html stylelint-config-recommended-vue stylelint-config-standard stylelint-config-prettier
インストールしたパッケージの詳細は下記の通りである。
パッケージ名 | 説明 |
---|---|
stylelint | StyleLintの本体 |
postcss-html | Vueをlintするのに必要 |
stylelint-config-recommended-vue | Vueをlintするための設定preset |
stylelint-config-standard | StyleLint公式の設定preset |
StyleLintの設定ファイルstylelint.config.jsをつくり、下記を記入する。
module.exports = {
extends: [
'stylelint-config-standard',
'stylelint-config-recommended-vue',
'stylelint-config-prettier',
],
}
Lintの対象から除外したいファイルがある場合は、ルートディレクトリに.stylelintignoreを作成して、除外する条件を書く。 以下は例である。
/dist/**/*.css
package.jsonにlint-cssコマンドを追加。 fixコマンドにも、lintコマンドと同時に動かすように追記する。
{
"scripts": {
"lint-css": "stylelint src/**/*.{css,vue}",
"fix": "yarn lint-css --fix && yarn format && yarn lint --fix"
},
}
とりあえず動くか試す。
yarn lint-css
yarn fix
VS Codeの場合はStyleLintの拡張機能 を追加し、config.jsonに下記を追記する。 そうするとVS Code側でもlintエラーを表示してくれる。
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.fixAll.stylelint": true,
},
"stylelint.validate": [
"vue",
"css",
],
}
参考文献・URL
- Prettier関連
- StyleLint関連