DEV Community

Dieni Kiellermann
Dieni Kiellermann

Posted on

1

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.

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay