<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Serge Ledig</title>
    <description>The latest articles on DEV Community by Serge Ledig (@sergel).</description>
    <link>https://dev.to/sergel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F652219%2F27eda703-d3df-49b1-aa8a-6ae46d54d696.jpeg</url>
      <title>DEV Community: Serge Ledig</title>
      <link>https://dev.to/sergel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sergel"/>
    <language>en</language>
    <item>
      <title>Laravel Vite avec Bootstrap 5 sur nouvelle app</title>
      <dc:creator>Serge Ledig</dc:creator>
      <pubDate>Tue, 04 Jul 2023 19:27:38 +0000</pubDate>
      <link>https://dev.to/sergel/laravel-vite-avec-bootstrap-5-sur-nouvelle-app-275j</link>
      <guid>https://dev.to/sergel/laravel-vite-avec-bootstrap-5-sur-nouvelle-app-275j</guid>
      <description>&lt;p&gt;&lt;strong&gt;Installez Boostrap et ses dépendances&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;npm i --save-dev sass bootstrap @popperjs/core&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configurer Vite&lt;/strong&gt;&lt;br&gt;
Modifiez le fichier &lt;strong&gt;&lt;em&gt;vite.config.js&lt;/em&gt;&lt;/strong&gt; à la racine de votre App comme suit :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
  plugins: [
    laravel({
      input: [
        'resources/sass/app.scss',
        'resources/js/app.js',
      ],
      refresh: true,
    }),
  ],
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Importer Bootstrap&lt;/strong&gt;&lt;br&gt;
Supprimez le dossier &lt;strong&gt;&lt;em&gt;resources/css/app.css&lt;/em&gt;&lt;/strong&gt; installé par défaut.&lt;br&gt;
Créez le dossier &lt;strong&gt;&lt;em&gt;resources/sass&lt;/em&gt;&lt;/strong&gt;, puis créez le fichier &lt;strong&gt;&lt;em&gt;resources/sass/app.scss&lt;/em&gt;&lt;/strong&gt; et éditez le comme suit :&lt;br&gt;
&lt;code&gt;@import "bootstrap/scss/bootstrap";&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Editez &lt;strong&gt;&lt;em&gt;resources/js/bootstrap.js&lt;/em&gt;&lt;/strong&gt; comme suit :&lt;br&gt;
(PopperJs sera importé automatiquement)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import * as bootstrap from 'bootstrap'
window.bootstrap = bootstrap; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Compiler&lt;/strong&gt;&lt;br&gt;
La compilation se fait comme sous Laravel-mix :&lt;br&gt;
&lt;code&gt;npm run dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Pour la mise en production&lt;br&gt;
&lt;code&gt;npm run build&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Le mode "dev" génère un fichier "hot" dans /Public &lt;br&gt;
Le mode "build" génèrera les éléments dans /public/build pour la mise en production du site.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Importer les "assets" CSS/JS dans les vues avec la directive Blade @vite&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;@vite(['resources/sass/app.scss', 'resources/js/app.js'])&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bien sûr, il est préférable de ne l'importer qu'une seule fois dans un fichier "Layouts"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pour finir&lt;/strong&gt;&lt;br&gt;
Et un petit coup de nettoyage pour bien repartir :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan clear-compiled &amp;amp;&amp;amp;
php artisan auth:clear-resets &amp;amp;&amp;amp;
php artisan cache:clear &amp;amp;&amp;amp;
php artisan config:clear &amp;amp;&amp;amp;
php artisan route:clear &amp;amp;&amp;amp;
php artisan view:clear
composer dump-autoload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Mettre à jour Laravel avec Vite et Bootstrap 5</title>
      <dc:creator>Serge Ledig</dc:creator>
      <pubDate>Thu, 30 Jun 2022 22:19:00 +0000</pubDate>
      <link>https://dev.to/sergel/laravel-vite-avec-bootstrap-5-3mi6</link>
      <guid>https://dev.to/sergel/laravel-vite-avec-bootstrap-5-3mi6</guid>
      <description>&lt;h2&gt;
  
  
  Fin juin 2022, Laravel annonce l'abandon de Webpack au profit de Vite.
&lt;/h2&gt;

&lt;p&gt;Depuis la version 9.23, les nouveaux projets Laravel utiliseront nativement Vite pour la génération des "assets" CSS et JS.&lt;/p&gt;

&lt;p&gt;Laravel a publié un &lt;a href="https://github.com/laravel/vite-plugin/blob/main/UPGRADE.md#migrating-from-laravel-mix-to-vite"&gt;guide de migration&lt;/a&gt; pour les projets existants.&lt;br&gt;
&lt;strong&gt;Mais comme depuis Laravel 7, Laravel oublie les utilisateurs Bootstrap...&lt;/strong&gt;&lt;br&gt;
Heureusement Cotiga est là pour vous sortir de ce trépas :p&lt;/p&gt;

&lt;p&gt;Cet article est un condensé du guide fournit par Laravel (cité plus haut), du guide de &lt;a href="https://github.com/twbs/bootstrap/pull/36412"&gt;Bootstrap&lt;/a&gt; encore en chantier et de cette &lt;a href="https://deploy-preview-36412--twbs-bootstrap.netlify.app/docs/5.2/getting-started/vite/"&gt;preview&lt;/a&gt;.&lt;br&gt;
Il convient aux applications existantes.&lt;br&gt;
La manipulation n'est pas complexe et relativement rapide.&lt;/p&gt;
&lt;h2&gt;
  
  
  De Laravel Mix à Vite
&lt;/h2&gt;

&lt;p&gt;Tout d'abord, installez &lt;a href="https://vitejs.dev/"&gt;Vite&lt;/a&gt; et le &lt;a href="https://www.npmjs.com/package/laravel-vite-plugin"&gt;plugin Laravel Vite&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install --save-dev vite laravel-vite-plugin&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Votre App est censée utiliser Boostrap et Sass, les paquets doivent donc être installés.&lt;br&gt;
&lt;strong&gt;Si non, installez-les :&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;npm install --save-dev sass bootstrap @popperjs/core&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;On peut maintenant désinstaller Laravel Mix et ses dépendances Webpack :&lt;br&gt;
&lt;code&gt;npm remove laravel-mix resolve-url-loader sass-loader&lt;/code&gt;&lt;br&gt;
&lt;code&gt;rm webpack.mix.js&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Configurer Vite
&lt;/h2&gt;

&lt;p&gt;Créez le fichier &lt;strong&gt;&lt;em&gt;vite.config.js&lt;/em&gt;&lt;/strong&gt; à la racine de votre App et éditez le comme suit :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { defineConfig } from 'vite'
import laravel from 'laravel-vite-plugin'
import path from 'path'

export default defineConfig({
  plugins: [
    laravel([
      'resources/js/app.js',
      // 'resources/js/homepage.js' Exemple js/css page d'accueil à mettre dans la vue : @vite(['resources/js/homepage.js']
    ]),
  ],
  resolve: {
    alias: {
      '~bootstrap': path.resolve(__dirname, 'node_modules/bootstrap'),
    }
  },
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dans votre App, le couple CSS/Sass était importé dans Laravel Mix. Avec Vite, nous n'utiliserons que le fichier JS, c'est lui qui importera le CSS/Sass.&lt;/p&gt;

&lt;h2&gt;
  
  
  Script NPM
&lt;/h2&gt;

&lt;p&gt;Modifiez la partie "scripts" dans &lt;strong&gt;&lt;em&gt;package.json&lt;/em&gt;&lt;/strong&gt; comme suit :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"scripts": {
  "dev": "vite",
  "build": "vite build"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Importer Bootstrap
&lt;/h2&gt;

&lt;p&gt;Normalement déjà présent sur une App existante.&lt;br&gt;
Sur une nouvelle App, importer les sources Bootstrap dans le fichier &lt;strong&gt;&lt;em&gt;resources/sass/app.scss&lt;/em&gt;&lt;/strong&gt; comme suit :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@import "~bootstrap/scss/bootstrap";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vite n'accepte que les modules ES, vous devez donc modifier les &lt;em&gt;require()&lt;/em&gt; par des &lt;em&gt;import&lt;/em&gt;.&lt;br&gt;
Editez &lt;strong&gt;&lt;em&gt;resources/js/bootstrap.js&lt;/em&gt;&lt;/strong&gt; comme suit :&lt;br&gt;
(PopperJs sera importé automatiquement)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import * as bootstrap from 'bootstrap'
window.bootstrap = bootstrap;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Importer le CSS/JS bootstrap dans &lt;strong&gt;&lt;em&gt;resources/js/app.js&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import '../sass/app.scss';
import './bootstrap';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Compiler
&lt;/h2&gt;

&lt;p&gt;La compilation se fait comme sous Laravel-mix :&lt;br&gt;
&lt;code&gt;npm run dev&lt;/code&gt;&lt;br&gt;
Pour la mise en production&lt;br&gt;
&lt;code&gt;npm run build&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Le mode "dev" ou production "build" est détecté et génèrera les éléments temporaires en dev et dans /public/build pour la mise en prod.&lt;/p&gt;
&lt;h2&gt;
  
  
  Remplacer &lt;code&gt;mix()&lt;/code&gt; par &lt;code&gt;@vite&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Lorsque vous utilisez Vite, vous devrez &lt;strong&gt;utiliser la directive Blade @vite au lieu de mix()&lt;/strong&gt; dans le layout (ou dans vos vues).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@vite(['resources/js/app.js'])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;RAPPEL : vous n'avez pas à inclure le fichier CSS, il est importé via JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pour finir
&lt;/h2&gt;

&lt;p&gt;Sur une App existante, mettez bien tout à jour :&lt;br&gt;
&lt;code&gt;composer update&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Si vous utilisez Valet, mettez le aussi à jour :&lt;br&gt;
&lt;code&gt;composer global update&lt;/code&gt;&lt;br&gt;
&lt;code&gt;valet install&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Et un petit coup de nettoyage pour bien repartir sur du neuf :&lt;br&gt;
&lt;code&gt;php artisan clear-compiled &amp;amp;&amp;amp;&lt;br&gt;
php artisan auth:clear-resets &amp;amp;&amp;amp;&lt;br&gt;
php artisan cache:clear &amp;amp;&amp;amp;&lt;br&gt;
php artisan config:clear &amp;amp;&amp;amp;&lt;br&gt;
php artisan route:clear &amp;amp;&amp;amp;&lt;br&gt;
php artisan view:clear&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;composer dump-autoload&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;En fonction de votre stratégie de déploiement, vous pouvez ajouter le dossier "build" au fichier &lt;strong&gt;&lt;em&gt;.gitignore&lt;/em&gt;&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/public/build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;br&gt;&lt;br&gt;
Un nouvel article est publié pour l'installation de Bootstrap 5 dans une nouvelle app Laravel.

</description>
      <category>laravel</category>
      <category>vite</category>
      <category>bootstrap</category>
    </item>
    <item>
      <title>Laravel 8 avec Bootstrap 5</title>
      <dc:creator>Serge Ledig</dc:creator>
      <pubDate>Sat, 19 Jun 2021 19:06:43 +0000</pubDate>
      <link>https://dev.to/sergel/laravel-8-avec-bootstrap-5-4c3e</link>
      <guid>https://dev.to/sergel/laravel-8-avec-bootstrap-5-4c3e</guid>
      <description>&lt;p&gt;Je ne le cache à personne, j'aime pas Tailwind 😋&lt;br&gt;
L'arrivé de Bootstrap 5 remet les pendules à l'heure, en purgeant le code d'IE et de Jquery.&lt;br&gt;
Les composants CSS et JS peuvent être ajoutés au besoin.&lt;/p&gt;




&lt;p&gt;Ouvrez le terminal, allez dans le dossier de l'app&lt;br&gt;
&lt;code&gt;cd /path/to/your.app&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Comme on ne veut pas de &lt;em&gt;Tailwind&lt;/em&gt;, on vire &lt;em&gt;postcss&lt;/em&gt; :&lt;br&gt;
&lt;code&gt;npm uninstall postcss&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Si vous n'allez pas utiliser &lt;em&gt;Lodash&lt;/em&gt; et &lt;em&gt;Axiox&lt;/em&gt;, on les vire :&lt;br&gt;
&lt;code&gt;npm uninstall axios lodash&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;On installe &lt;em&gt;Bootstrap&lt;/em&gt; avec &lt;em&gt;Popperjs&lt;/em&gt; et pour être prèt à compiler, on ajoute de suite &lt;em&gt;Sass&lt;/em&gt; et les &lt;em&gt;loaders&lt;/em&gt;.&lt;br&gt;
&lt;code&gt;npm install @popperjs/core bootstrap resolve-url-loader sass-loader --save-dev&lt;/code&gt;&lt;br&gt;
&lt;code&gt;npm install sass@1.32.13 --save-dev --save-exact&lt;/code&gt;&lt;br&gt;
&lt;em&gt;ℹ️ j'ai forcé la version 1.32 de SASS à cause des warning ci-dessous, rencontrés quand on compile avec la version 1.33 ou supérieure.&lt;br&gt;
Recommendation: math.div($spacer, 4)&lt;br&gt;
1: $spacer / 4,&lt;br&gt;
Recommendation: math.div($spacer, 2)&lt;br&gt;
2: $spacer / 2, ...&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;EDITEZ&lt;br&gt;
&lt;code&gt;nano resources/js/bootstrap.js&lt;/code&gt;&lt;br&gt;
COMME CECI&lt;br&gt;
&lt;code&gt;window._ = require('lodash');&lt;br&gt;
import "bootstrap";&lt;br&gt;
window.axios = require('axios');&lt;br&gt;
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';&lt;/code&gt;&lt;br&gt;
ENREGISTREZ, FERMEZ&lt;br&gt;
&lt;code&gt;CTRL + x&lt;/code&gt;&lt;br&gt;
&lt;code&gt;o&lt;/code&gt;&lt;br&gt;
&lt;em&gt;ℹ️ si vous n'utilisez pas Lodash et/ou Axios, vous pouvez effacer les lignes les concernant.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;ATTENTION, nous allons travailler sur le fichier app.Scss et non app.Css (qu'on vire)&lt;br&gt;
&lt;code&gt;rm resources/css/app.css&lt;/code&gt;&lt;br&gt;
&lt;code&gt;nano resources/css/app.scss&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;AJOUTEZ&lt;br&gt;
&lt;code&gt;@import '~bootstrap/scss/bootstrap';&lt;/code&gt;&lt;br&gt;
ENREGISTREZ, FERMEZ&lt;br&gt;
&lt;code&gt;CTRL + x&lt;/code&gt;&lt;br&gt;
&lt;code&gt;o&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;EDITEZ&lt;br&gt;
&lt;code&gt;nano webpack.mix.js&lt;/code&gt;&lt;br&gt;
COMME CECI&lt;br&gt;
&lt;code&gt;const mix = require('laravel-mix');&lt;br&gt;
mix.js('resources/js/app.js', 'public/js')&lt;br&gt;
   .sass('resources/css/app.scss', 'public/css');&lt;br&gt;
if (mix.inProduction()) {&lt;br&gt;
   mix.version();&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;COMPILEZ&lt;br&gt;
&lt;code&gt;npx mix&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;INSÉREZ LE CSS DANS LES VUES (ou mieux, dans le layout)&lt;br&gt;
&lt;code&gt;&amp;lt;link rel="stylesheet" href="{{ mix('css/app.css') }}"&amp;gt;&lt;/code&gt;&lt;br&gt;
Avant de fermer &amp;lt;/head&amp;gt;&lt;/p&gt;

&lt;p&gt;ET LE JS&lt;br&gt;
&lt;code&gt;&amp;lt;script src="{{ mix('js/app.js') }}"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br&gt;
Avant de fermer &amp;lt;/body&amp;gt;&lt;/p&gt;

</description>
      <category>laravel8</category>
      <category>bootstrap5</category>
    </item>
  </channel>
</rss>
