Eu tive muitos problemas com o uso de laravel/ui
para instalar e, em seguida, usar as últimas versões atualizadas dos pacotes Twitter Bootstrap, jQuery e Popper.js. Como a versão de instalada do Bootstrap usando o laravel ui
está desatualizada, por exemplo, no Laravel 8, é apenas a versão 4.6, e a versão mais recente é, a partir de hoje: 5.2.2 Bootstrap releases, então decidi tentar instalar os pacotes sozinho usando o Laravel Mix
.
Se você deseja adicionar Bootstrap e jQuery usando Vite com Laravel, leia este post
Instalando o Twitter Bootstrap, Jquery e Popper.js em Laravel
Execute os seguintes comandos para instalá-los no Linux Ubuntu ou Linux Mint:
# Fazemos isso porque vai cuidar de muitas coisas para nós
composer require laravel/ui
php artisan ui bootstrap
# E agora atualizamos o bootstrap e adicionamos uma nova versão do Popper.js
npm install bootstrap@latest @popperjs/core --save-dev
Isso deve instalar todo o node_modules
incluindo bootstrap v. 5.2.2, jquery v. 3.6, e @popperjs/core v. 2.10.2.
Nosso arquivo package.json
agora se parece com o seguinte:
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "mix",
"watch": "mix watch",
"watch-poll": "mix watch -- --watch-options-poll=1000",
"hot": "mix watch --hot",
"prod": "npm run production",
"production": "mix --production"
},
"devDependencies": {
"@popperjs/core": "^2.10.2",
"axios": "^0.21",
"bootstrap": "^5.1.1",
"jquery": "^3.6",
"laravel-mix": "^6.0.6",
"lodash": "^4.17.19",
"popper.js": "^1.16.1",
"postcss": "^8.1.14",
"sass": "^1.32.11",
"sass-loader": "^11.0.1"
}
}
Configure o arquivo js/bootstrap.js
Precisamos fazer um require
de jQuery, Bootstrap e popper.js no arquivo resources/js/bootstrap.js
.
Para fazer isso, altere o código do arquivo para que se pareça com o seguinte:
window._ = require('lodash');
/**
* We'll load jQuery and the Bootstrap jQuery plugin which provides support
* for JavaScript based Bootstrap features such as modals and tabs. This
* code may be modified to fit the specific needs of your application.
*/
try {
window.$ = window.jQuery = require('jquery');
window.Popper = require('@popperjs/core');
window.bootstrap = require('bootstrap');
} catch (e) {}
/**
* We'll load the axios HTTP library which allows us to easily issue requests
* to our Laravel back-end. This library automatically handles sending the
* CSRF token as a header based on the value of the "XSRF" token cookie.
*/
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
Compilando bootstrap, jQuery e popper com Laravel Mix
Depois de executar todas as etapas anteriores e alterar os arquivos corretos, execute o comando npm
para compilar os recursos:
npm run dev
Lembre-se de quando você implantar em produção será executado o comando npm run prod
Teste o Bootstrap, jQuery e Popper com Laravel Blade
Agora você pode criar uma página Blade de exemplo para testar se tudo está funcionando.
Você pode usar esta página HTML/JS que testa todos eles juntos:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>jQuery, popper.js, and Bootstrap</title>
{{-- Load compiled CSS --}}
<link rel="stylesheet" href={{ asset('css/app.css') }}>
{{-- popper.js CSS example --}}
<style>
#tooltip {
background: #333;
color: white;
font-weight: bold;
padding: 4px 8px;
font-size: 13px;
border-radius: 4px;
}
</style>
</head>
<body>
{{-- Test Bootstrap css --}}
<div class="alert alert-success mt-5" role="alert">
O Bootstrap 5 está funcionando usando o Laravel 8 Mix!
</div>
{{-- popper.js HTML example --}}
<button id="button" aria-describedby="tooltip">Meu botão</button>
<div id="tooltip" role="tooltip">Meu tooltip</div>
{{-- Load compiled Javascript --}}
<script src="{{ asset('js/app.js') }}"></script>
<script>
//Test jQuery
$(document).ready(function () {
console.log('jQuery funciona!');
//Test bootstrap Javascript
console.log(bootstrap.Tooltip.VERSION);
});
//Test popper.js
const button = document.querySelector('#button');
const tooltip = document.querySelector('#tooltip');
const popperInstance = Popper.createPopper(button, tooltip);
</script>
</body>
</html>
Conclusão
Você não precisa ficar preso na versão padrão do bootstrap que foi definida nos projetos Laravel 8, basta alterar as configurações e arquivos corretos para instalar e usar as versões mais recentes de bootstrap, jquery e popper.js.
Comentários