Do Vue Cli para o Vite utilizando Vue2

dienik

Dieni Kiellermann

Posted on February 28, 2023

Do Vue Cli para o Vite utilizando Vue2

Por que isso é importante?

O Vue CLI e o Vite são ferramentas de desenvolvimento web que auxiliam na criação de projetos Vue. Enquanto o Vue CLI é uma ferramenta de linha de comando que ajuda a gerenciar projetos, o Vite é uma ferramenta de compilação e desenvolvimento que oferece uma experiência de desenvolvimento mais rápida.

Atualizar do Vue CLI para o Vite usando o Vue 2 pode trazer melhorias significativas para a experiência de desenvolvimento. O Vite usa um servidor de desenvolvimento extremamente rápido que proporciona atualizações instantâneas sem precisar reconstruir todo o projeto. Além disso, o Vite é capaz de otimizar a compilação do projeto, resultando em um tempo de compilação mais rápido e em arquivos gerados menores.

Em resumo, atualizar para o Vite pode levar a um desenvolvimento mais eficiente e rápido do projeto Vue, proporcionando uma experiência mais fluida e produtiva para os desenvolvedores.

Passo 1

Como fazer a migração

O primeiro passo para migrar para o Vite é atualizar as dependências no arquivo package.json. Para fazer isso, é necessário remover as dependências relacionadas ao Vue CLI, tais como "@vue/cli-plugin-babel", "@vue/cli-plugin-eslint", "@vue/cli-plugin-router", "@vue/cli-plugin-vuex" e "@vue/cli-service". Além disso, também é possível remover o "sass-loader", uma vez que o Vite já fornece suporte integrado para pré-processadores mais comuns.

 // package.json
"@vue/cli-plugin-babel": "~4.0.0", // remove
"@vue/cli-plugin-eslint": "~4.0.0", // remove
"@vue/cli-plugin-router": "~4.0.0", // remove
"@vue/cli-plugin-vuex": "~4.0.0", // remove
"@vue/cli-service": "~4.0.0", // remove
"sass-loader": "^8.0.2" // remove
- 
Enter fullscreen mode Exit fullscreen mode

Em seguida, adicionamos o Vite e o plug-in do Vue para o Vite como dependências, usando as seguintes linhas:

"vite": "^4.1.0"
"@vitejs/plugin-legacy": "^4.0.1",
Enter fullscreen mode Exit fullscreen mode

Como estamos migrando um projeto Vue 2, também precisamos incluir o plug-in Vite mantido pela comunidade para Vue 2. Adicionamos o seguinte trecho ao package.json:

"@vitejs/plugin-vue2": "^2.2.0"
Enter fullscreen mode Exit fullscreen mode

Com os plug-ins do Vite instalados, podemos remover a seguinte linha do package.json:

//remove
"vue-template-compiler": "^2.6.11"
Enter fullscreen mode Exit fullscreen mode

Depois de atualizar as dependências no arquivo package.json, precisamos executar o comando "npm install" ou "yarn install" para instalar as dependências atualizadas.

É necessario remover completamente o Babel de nossas dependências, podemos começar excluindo o arquivo babel.config.js. Além disso, podemos remover outras dependências relacionadas ao Babel do package.json, como babel-eslint e core-js, uma vez que já removemos a dependência @vue/cli-plugin-babel, que requer o próprio Babel.

Com babel-eslint removido, também precisamos removê-lo do nosso arquivo .eslintrc.

Então no arquivo .eslintrc

// remove parser options
parserOptions: {
    parser: "babel-eslint",
},

env: {
    node: true, // remove
    es2021: true, //atualize o nó para es2021
}
Enter fullscreen mode Exit fullscreen mode

Essa mudança exige que atualizemos o eslint e o eslint-plugin-vue para suportar o ambiente es2021.

Para realizar essas alterações, podemos executar o seguinte comando:

$ npm install eslint@8 eslint-plugin-vue@8
Enter fullscreen mode Exit fullscreen mode

Passo 2

Configurando o Vite na raiz do projeto

Vamos criar na raiz do nosso projeto um arquivo chamado vite.config.js. Esse arquivo é responsável por configurar o Vite para o projeto Vue.js. Vamos analisar linha por linha:

import vue2 from "@vitejs/plugin-vue2";
//Aqui, o pacote @vitejs/plugin-vue2 é importado e atribuído à variável vue2. Esse plugin é necessário para suportar componentes Vue 2 no Vite.
Enter fullscreen mode Exit fullscreen mode
import { fileURLToPath, URL } from "node:url"
Essa linha importa as funções fileURLToPath e URL do módulo node:url. Essas funções são usadas para manipular caminhos de arquivos no código.
Enter fullscreen mode Exit fullscreen mode
export default defineConfig({

  plugins: [
    vue2(),
  ],
  resolve: {
     alias: {
       "@": fileURLToPath(new URL("./src", import.meta.url)),
       extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue', '.scss'],
     },
   },
})
Enter fullscreen mode Exit fullscreen mode

Aqui, o objeto de configuração é exportado como o padrão. As chaves dentro dele, como plugins e resolve, são usadas para definir variáveis, plugins e opções de resolução de caminho. O Vite precisa das extensões dos arquivos, se o seu projeto for grande como o meu, é prático utilizar esse extensions, caso contrario, atualize manualmente seus imports com as extensoes dos seus arquivos.

Passo 3

Movendo o index.html

Agora, vamos mover o arquivo index.html que contém nosso aplicativo Vue.js da pasta public para a raiz do projeto, porque o Vite coloca o arquivo index.html na raiz do projeto e não no diretório público como o Vue CLI faz.
Após fazer isso, dentro do arquivo index.js precisam ocorrer as seguintes substituições:

// index.html

<!--remove-->
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<!--add-->
<link rel="icon" href="/favicon.ico">
Enter fullscreen mode Exit fullscreen mode

Por fim, o JavaScript não será mais injetado automaticamente, então precisamos incluí-lo manualmente no arquivo index.html usando uma tag de script com o atributo type="module" e apontando para o caminho correto do arquivo main.js que está em /src/main.js.

 <script type="module" src="/src/main.js"></script>
Enter fullscreen mode Exit fullscreen mode

Passo 4

Atualizando as variáveis de ambiente

Precisamos atualizar as variáveis de ambiente usadas pelo nosso projeto. As variáveis de ambiente são informações que o projeto pode usar para se adaptar a diferentes situações. No Vite, podemos usar um arquivo chamado .env para armazenar essas informações.

No entanto, há uma diferença importante no Vite em relação ao Vue CLI: agora, em vez de usar process.env para acessar essas variáveis, precisamos usar import.meta.env. Além disso, se você costumava usar variáveis ​​de ambiente com o prefixo VUE_APP_, precisará alterá-las para usar o prefixo VITE_.

base: process.env.BASE_URL, //remove
base: import.meta.env.BASE_URL
Enter fullscreen mode Exit fullscreen mode
 "BACK_API": "$VUE_APP_BACK_API", ///remove
  "BACK_API": "$VITE_BACK_API", ///faça isso em todos os locais semelhantes
Enter fullscreen mode Exit fullscreen mode

Passo 5

Atualizando os scripts

Para usar o Vite, precisamos atualizar algumas coisas no nosso arquivo de configuração chamado package.json. Isso inclui atualizar os comandos que usamos para desenvolver e construir nosso aplicativo.

Antes, quando usávamos o Vue CLI, usávamos os comandos "serve" e "build", mas agora com o Vite, usamos "dev" e "build". Também precisamos atualizar o comando "serve" para "preview" se quisermos visualizar a compilação de produção localmente.

// package.json
"serve": "vue-cli-service serve", // remove
"build": "vue-cli-service build", // remove
"dev": "vite",
"build": "vite build",
"serve": "vite preview"
Enter fullscreen mode Exit fullscreen mode

Após isso, execute npm run dev e veja no terminal se o vite está rodando, caso ele dê erro, veja se o erro está incluido no próximo passo.

Erros que podem acontecer durante a migração e como resolver

Failed to resolve entry for package "fs"

O erro Failed to resolve entry for package "fs". The package may have incorrect main/module/exports specified in its package.json.' geralmente acontece porque o código está tentando acessar o pacote "fs" em um ambiente que não tem acesso ao sistema de arquivo, a solução para ele não se encontra nas documentações oficiais. Para resolver esse erro, vamos adicionar a seguinte linha no nosso package.json

///package.json
dependencies{
    "rollup-plugin-node-builtins": " ^2.1.2 "}
}
Enter fullscreen mode Exit fullscreen mode

e no nosso arquivo vite.config.js adicionaremos o seguinte:

resolve: {
  alias: {
    fs: require.resolve('rollup-plugin-node-builtins'),
Enter fullscreen mode Exit fullscreen mode

Com isso, o seu erro irá sumir rapidamente, lembre-se sempre de dar o npm install ou yarn install, para adicionar os pacotes no projeto.

Process is not defined

Outro erro comum, porem com a resolução dificil de encontrar, é o ReferenceError: process is not defined, ele ocorre pela ausencia de de uma definição global para process, então, no arquivo vite.config.js, adicione a seguinte linha

 define: {
    'process.env': {},
  },
Enter fullscreen mode Exit fullscreen mode

Espero que esse artigo tenha sido útil, no próximo iremos abordar a nova configuração do plugin i18n no projeto, para implementação de traduções.

💖 💪 🙅 🚩
dienik
Dieni Kiellermann

Posted on February 28, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related