Análise estática do código (Linting)

Você pode ter se perguntado como você analisa seu código dentro dos seus arquivos *.vue, uma vez que eles não são JavaScript. Vamos supor que você está usando ESLint (se você não está, deveria).

Você também precisará do eslint-plugin-html que suporte de extração e análise estática (linting) do JavasScript dentro dos arquivos *.vue.

Certifique-se de incluir o plugin dentro de suas configurações ESLint:

"plugins": [
    "html"
]

Em seguida, a partir da linha de comando:

eslint --ext js,vue MeuComponente.vue

Outra opção é usar eslint-loader para que seus arquivos *.vue sejam automaticamente analisados ao serem salvo durante o desenvolvimento:

npm install eslint eslint-loader --save-dev
// webpack.config.js
module.exports = {
    // ... outras opções
    module: {
        loaders: [
            {
                test: /\.vue$/,
                loader: 'vue!eslint'
            }
        ]
    }
}

Lembre-se que a sequência dos carregadores webpack são aplicados da direita para esquerda. Certifique-se de aplicar eslint antes de vue, de modo que estamos analisando o código fonte pré-compilado.

Uma coisa que precisamos considerar é o uso de componente *.vue de terceiros enviados em pacote NPM. Neste caso, usaremos vue-loader para processar os componentes de terceiros, mas não queremos aplicar a análise de código estático (linting). Para isso nós podemos separar o linting em preLoaders do webpack.

// webpack.config.js
module.exports = {
    // ... outras opções
    module: {
        // lint apenas em arquivos *.vue locais
        preLoaders: [
            {
                test: /\.vue$/,
                loader: 'eslint',
                exclude: /node_modules/
            }
        ],
        // mas usa vue-loader para todos arquivos *.vue
        loaders: [
            {
                test: /\.vue$/,
                loader: 'vue'
            }
        ]
    }
}

Para webpack 2.x:

// webpack.config.js
module.exports = {
    // ... outras opções
    module: {
        rules: [
            // lint apenas em arquivos *.vue locais
            {
                enforce: 'pre',
                test: /\.vue$/,
                loader: 'eslint-loader',
                exclude: /node_modules/
            },
            // mas usa vue-loader para todos arquivos *.vue
            {
                test: /\.vue$/,
                loader: 'vue-loader'
            }
        ]
    }
}

results matching ""

    No results matching ""