nuxt 3(nuxt-bridge)でlint周りの設定
最近仕事でnuxt-bridge
で新しいproject作成したため、lint周りの設定をメモしていく
Eslint
TypeScriptも利用しているため、まずはts
, eslint
関連のpackageをinstall。自分は下記を使っています
yarn add -D eslint eslint-plugin-vue @typescript-eslint/eslint-plugin @typescript-eslint/parser @nuxtjs/eslint-config-typescript
package.json
にscriptを追加する。
"scripts": {
...
"lint:js": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ."
...
}
.eslintrc.js
を追加する。
module.exports = {
env: {
browser: true,
node: true,
es2021: true,
},
extends: [
'@nuxtjs/eslint-config-typescript',
'plugin:@typescript-eslint/recommended',
'plugin:vue/vue3-recommended'
],
parser: 'vue-eslint-parser',
parserOptions: {
parser: '@typescript-eslint/parser',
ecmaVersion: 'latest',
sourceType: 'module',
},
plugins: ['vue', '@typescript-eslint'],
rules: { ... },
overrides: [
{
files: ['pages/*.vue'],
rules: {
'vue/multi-word-component-names': 'off',
},
},
],
ignorePatterns: ['.nuxt/', '.output/', 'dist/', 'public/', '**/*.min.js'],
}
yarn lint:js
を実行してみて、問題なくいけた。これでeslint
の設定は完了。
参考にした記事:
Prettier
prettier
関連のpackageをinstall
yarn add -D prettier eslint-config-prettier eslint-plugin-prettier @vue/eslint-config-prettier
.eslintrc.js
のextends
に追加する。
{
...
extends: [
'@nuxtjs/eslint-config-typescript',
'plugin:@typescript-eslint/recommended',
'plugin:vue/vue3-recommended',
// ここ👇👇👇
'@vue/eslint-config-prettier',
],
}
...
package.json
にscriptを追加する。
"scripts": {
...
"lint:js": "eslint --ext .js,.ts,.vue --ignore-path .gitignore .",
"lint:prettier": "prettier --check ."
...
}
.prettierrc
は必要なのを追加する。.prettierignore
は.gitignore
とほぼ同じもの。
{
"semi": false,
"singleQuote": true,
"endOfLine": "lf"
...
}
yarn lint:prettier
を実行してみて、問題なくいけた。これでprettier
の設定も完了。
Stylelint
stylelint
関連のpackageをinstall
yarn add -D stylelint stylelint-config-recommended stylelint-config-recommended-vue stylelint-config-standard
package.json
にscriptを追加する。
"scripts": {
...
"lint:js": "eslint --ext .js,.ts,.vue --ignore-path .gitignore .",
"lint:prettier": "prettier --check .",
"lint:style": "stylelint **/*.{css,scss,sass,html,vue} --ignore-path .gitignore",
...
}
.stylelintrc.js
の設定を追加する。
module.exports = {
extends: [
'stylelint-config-recommended',
'stylelint-config-standard',
'stylelint-config-recommended-vue',
]
}
これで実行してみると、下記のエラーが発生する😵。。。
When linting something other than CSS, you should install an appropriate syntax, e.g. "postcss-scss", and use the "customSyntax" option
調べてみると、なので自分でpluginをinstallしないといけなくなった😣。
Stylelint 13まではシンタックス自動類推機能のために各シンタックス用のPostCSSプラグインを依存ライブラリとして含んでいたが、Stylelint 14からは含まなくなった。 そのため、ユーザが自分でプラグインをインストールし、シンタックスを指定する必要がある。
解決方法2つありました
- エラーのsuggestionのように
postcss-scss
installして、customSyntax
optionの追加
yarn add -D postcss-scss
.stylelintrc.js
の設定にcustomSyntax
optionの追加する。
module.exports = {
customSyntax: "postcss-scss",
extends: [
'stylelint-config-recommended',
'stylelint-config-standard',
'stylelint-config-recommended-vue',
]
}
-
stylelint-config-recommended-scssを利用する。
The recommended shareable SCSS config for stylelint.
らしい。
yarn add -D stylelint-config-recommended-scss
postcss-scss が依存ライブラリとして自動でインストールされる。 また、"customSyntax": "postcss-scss" 設定も継承される。コミュニティが推奨するルールセットも有効になる。
みたいですのでextends
に追加するだけでおっけ!
module.exports = {
extends: [
'stylelint-config-recommended',
'stylelint-config-standard',
'stylelint-config-recommended-vue',
'stylelint-config-recommended-scss'
]
}
これで問題ないでしょうと思ってもう一回実行してみると、今度は😵
layouts/default.vue
✖ Unknown word CssSyntaxError
色々調べて、これで解決
yarn add -D postcss-html
module.exports = {
extends: [
'stylelint-config-recommended',
'stylelint-config-standard',
'stylelint-config-recommended-vue',
'stylelint-config-recommended-scss',
],
// ここ
overrides: [
{
files: ['**/*.vue'],
customSyntax: 'postcss-html',
},
],
}
もう一回yarn lint:style
実行してみると問題なくいけた、これでstylelint
の設定も完了!🎉
参考にした記事:
最後にはまとめてlinter実行するscriptとformatするためのscript追加
"scripts": {
...
"lint:js": "eslint --ext .js,.ts,.vue --ignore-path .gitignore .",
"lint:prettier": "prettier --check .",
"lint:style": "stylelint **/*.{css,scss,sass,html,vue} --ignore-path .gitignore",
"lint": "yarn lint:js && yarn lint:style && yarn lint:prettier",
"lint:fix": "prettier --write --list-different . && yarn lint:js --fix && yarn lint:style --fix"
...
}
stylelintのエラーなどをvscodeで確認できるために、stylelint extension 追加して、vscodeのsettings.json
にoptions追加すると、確認できる
{
"stylelint.enable": true,
"stylelint.snippet": ["css", "postcss", "scss", "vue"],
"stylelint.validate": ["css", "postcss", "scss", "vue"]
}