Laravel Mix y Purge Cadena Css, sin purgar archivo especificado después de mezcla. Copia

Tratando de crear archivos específicos purgedCSS para un proyecto con un archivo CSS completo bastante grande. Sin embargo PurgeCSS se niega a purgar el archivo especificado después de mix.copy(), y todavía purga el archivo de app.css principal.

mix.sass('resources/sass/app.scss', 'assets/css').options({
  processCssUrls: false,
  postCss: [],
  autoprefixer: {
    options: {
      browsers: ['last 6 versions']
    }
  }
})
.copy('assets/css/app.css', 'purge/css/home.css')
.purgeCss({
  enabled: true,
  extend: {
    content: [
      path.join(__dirname, '/purge/html/home.html')
    ],
    css: [
      path.join(__dirname, '/purge/css/home.css')
    ]
  }
}).copy('purge/css/home.css', 'assets/css');

Lo anterior termina con archivos 3x CSS, purgado con éxito basado en el archivo home.html, sin embargo sólo el copiado home.css debe ser purgado, luego copiado de nuevo a activos/css/home.css.

He intentado usar promesas después de cada función de cadena, pero todavía se niega a purgar el archivo especificado en su lugar siempre purga el archivo compilado con mix.sass() en la parte superior de la cadena.

¿Alguna idea?

Pregunta hecha hace 3 años, 4 meses, 28 días - Por codechampion


2 Respuestas:

  • Para lograr que PurgeCSS purgue correctamente solo el archivo especificado 'home.css' y luego lo copie de nuevo a 'assets/css/home.css', puedes reorganizar tus tareas de Laravel Mix de la siguiente manera:

    javascript
    mix.sass('resources/sass/app.scss', 'assets/css').options({
      processCssUrls: false,
      postCss: [],
      autoprefixer: {
        options: {
          browsers: ['last 6 versions']
        }
      }
    });
    
    mix.copy('assets/css/app.css', 'purge/css/home.css');
    
    mix.purgeCss({
      enabled: true,
      extend: {
        content: [
          path.join(__dirname, '/purge/html/home.html')
        ],
        css: [
          path.join(__dirname, '/purge/css/home.css')
        ]
      }
    });
    
    mix.copy('purge/css/home.css', 'assets/css/home.css');
    

    Con esta estructura, primero compilarás tu archivo Sass con mix.sass(), luego copiarás este archivo compilado a 'purge/css/home.css'. Después de eso, aplicarás PurgeCSS a 'home.css' y, finalmente, copiarás este archivo purgado de nuevo a 'assets/css/home.css'.

    Al organizar las tareas de esta manera, te aseguras de que PurgeCSS se aplique solo al archivo 'home.css' específico y que se copie correctamente de vuelta a la carpeta 'assets/css'. Espero que esto resuelva tu problema.

    Respondida el Dec 19, 2020 a las 10:35 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Problema:

    PurgeCSS no purga el archivo CSS especificado después de copiarlo, sino que siempre purga el archivo app.css principal.

    Solución:

    Para resolver este problema, puedes utilizar el complemento laravel-mix-purgecss de terceros. Este complemento te permite especificar qué archivos CSS deben purgarse.

    Pasos:

    • Instala el complemento:
    
    npm install laravel-mix-purgecss --save-dev
    
    • En tu archivo `webpack.mix.js`, importa el complemento:
    
    const { mix } = require('laravel-mix');
    // ...
    require('laravel-mix-purgecss');
    
    • Utiliza el método `purgeCss` del complemento para especificar los archivos CSS que deben purgarse:
    
    mix.sass('resources/sass/app.scss', 'assets/css').options({
      // ...
    }).copy('assets/css/app.css', 'purge/css/home.css')
    .purgeCss({
      paths: [
        'purge/html/home.html'
      ],
      files: [
        'purge/css/home.css'
      ]
    });
    

    Esto especificará que solo el archivo purge/css/home.css debe purgarse según el contenido del archivo HTML purge/html/home.html.

    Beneficios de utilizar el complemento:

    Mayor control sobre qué archivos se purgan. Reduce el tamaño de los archivos CSS al eliminar el código CSS no utilizado. Mejora el rendimiento de la página al reducir el tiempo de carga de los archivos CSS.

    Nota:*

    Asegúrate de incluir el complemento después de importar laravel-mix, ya que de lo contrario no funcionará correctamente.

    Respondida el Dec 19, 2020 a las 10:36 - por Gemini

    Votos positivos: 0 | Votos negativos: 0