将 Stylelint 与 Vue.js 集成

dcr*_*r24 10 javascript webpack vue.js stylelint vue-cli

我正在尝试将stylelint集成到我新创建的 Vue 项目中。

我认为这将是使用Stylelint Webpack 插件的一个简单案例,但是当我运行时yarn serve,任何错误都会完全冻结它而没有输出。如果我运行yarn build,构建将按预期失败,但只会打印"There was a stylelint error"

vue.config.js的如下:

const stylelintPlugin = require('stylelint-webpack-plugin');

module.exports = {
  configureWebpack: {
    plugins: [
      new stylelintPlugin({ files: ['**/*.(vue|scss)'] }),
    ],
  },
};
Run Code Online (Sandbox Code Playgroud)

这是我当前的版本package.json

 "@vue/cli-service": "^3.9.0",
 "stylelint": "^10.1.0",
 "stylelint-config-recommended": "^2.2.0",
 "stylelint-scss": "^3.9.2",
Run Code Online (Sandbox Code Playgroud)

ux.*_*eer 19

虽然这可能为时已晚,但这里是使用stylelint-config-recommended-scss.

它是第 3 方stylelint-scss插件的扩展,需要与其stylelint自身一起安装。还stylelint-webpack-plugin需要安装,这似乎从您的设置中丢失了。

安装开发依赖:

# First remove an unnecessary one you had (with NPM):
npm uninstall stylelint-config-recommended

# Or with Yarn:
yarn remove stylelint-config-recommended

# Install dev deps with NPM:
npm i -D stylelint stylelint-scss stylelint-config-recommended-scss stylelint-webpack-plugin

# Or with Yarn:
yarn add -D stylelint stylelint-scss stylelint-config-recommended-scss stylelint-webpack-plugin
Run Code Online (Sandbox Code Playgroud)

在您的vue.config.js配置文件中:

const StyleLintPlugin = require('stylelint-webpack-plugin');

module.exports = {
  configureWebpack: {
    plugins: [
      new StyleLintPlugin({
        files: ['src/**/*.{vue,scss}'],
      }),
    ],
  },
};
Run Code Online (Sandbox Code Playgroud)

stylelint.config.js在项目的根文件夹中创建一个文件:

module.exports = {
  extends: 'stylelint-config-recommended-scss',
  rules: {
    'selector-pseudo-element-no-unknown': [
      true,
      {
        ignorePseudoElements: ['v-deep']
      }
    ]
  }
};
Run Code Online (Sandbox Code Playgroud)

package.json您可以添加该lint:scss命令(通过运行npm run lint:scss)。它尝试对所有规则运行自动修复,但请注意并非所有规则都可以自动修复。

在这种情况下,脚本将输出错误行列表并在出错时退出。您需要手动修复这些问题,然后重新运行脚本以查看错误是否已修复:

{
  "scripts": {
    "lint:scss": "stylelint ./src/**/*.{vue,scss} --fix"
  }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!如果我错过了什么,请添加评论。