¿Puedo combinar archivos js con encore?

Tengo proyecto de sifonía con plantilla de arranque twitter (activos codificados en twig). Me gustaría administrar activos con Encore, pero si el archivo de proceso encore, hacer módulo y la próxima magia de compilación.

¿Es de alguna manera cómo confiar Encore sólo combinar js, sin compilación?

Instalación básica Encore: https://symfony.com/doc/current/frontend/encore/installation.html

...y mi idea, en el archivo app.js:

include '1-file.js'; // alert(1);
include '2-file.js'; // alert(2);

y salida en twig:

merged.js // alert(1); alert(2);

gracias por cualquier consejo

Pregunta hecha hace 3 años, 5 meses, 0 días - Por javagiant


3 Respuestas:

  • He estado trabajando con core durante muchos meses, cuando corres yarn build o npm run build, encore minimizar esos archivos. In webpack.config.js tiene una opción llamada enableSingleRuntimeChunk(). Esta opción dice al sistema que, en caso de un archivo grande, encore dividirá el archivo en dos para optimizar el proceso. Si desea deshabilitar, retire la línea anterior y escriba .disableSingleRuntimeChunk().

    No te olvides de volver a correr encore para salvar estos cambios!!

    Respondida el Dec 16, 2020 a las 16:59 - por techtrailblazer

    Votos positivos: 0 | Votos negativos: 0

  • Sí, es posible combinar archivos JS con Encore sin necesidad de compilar. Encore de Symfony te permite combinar archivos JS de manera sencilla y sin necesidad de compilarlos necesariamente.

    En tu archivo app.js, puedes usar la funcionalidad de Encore para requerir los archivos JS que deseas combinar. Por ejemplo:

    javascript
    // app.js
    require('./1-file.js');
    require('./2-file.js');
    

    De esta manera, al ejecutar Encore para combinar los archivos JS, obtendrás un archivo combinado que contiene el contenido de 1-file.js y 2-file.js.

    Para compilar estos archivos combinados, puedes ejecutar el siguiente comando en la terminal:

    
    yarn encore dev
    

    Esto generará un archivo final de salida que puedes incluir en tu plantilla Twig. Recuerda que además de combinar los archivos, Encore también proporciona funcionalidad adicional como minificación, sourcemaps y otros procesos de optimización.

    Espero que esta información te sea útil. Si tienes alguna otra pregunta, no dudes en hacerla. ¡Buena suerte!

    Respondida el Dec 17, 2020 a las 16:55 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Sí, es posible combinar archivos JS con Encore sin compilación.

    Para lograrlo, puedes utilizar la función Encore.addEntry() para agregar cada archivo JS que desees combinar. Aquí tienes un ejemplo:

    
    // webpack.config.js
    const Encore = require('@symfony/webpack-encore');
    
    Encore
        // Agrega los archivos JS individuales
        .addEntry('merged', [
            './assets/js/1-file.js',
            './assets/js/2-file.js',
        ])
        // ... Otra configuración de Encore
    
    module.exports = Encore.getWebpackConfig();
    

    Esto creará un archivo JavaScript combinado llamado merged.js que incluirá el contenido de 1-file.js y 2-file.js. La salida se puede incluir en tu plantilla Twig utilizando la etiqueta encore_entry_script_tags.

    Para confiar en Encore solo para combinar JS sin compilación:

    Elimina la configuración de Babel y SASS de tu archivo webpack.config.js. Establece copyFiles: true en la configuración de Encore para copiar archivos estáticos sin procesarlos.

    Ejemplo:

    
    // webpack.config.js
    const Encore = require('@symfony/webpack-encore');
    
    Encore
        // Agrega los archivos JS individuales
        .addEntry('merged', [
            './assets/js/1-file.js',
            './assets/js/2-file.js',
        ])
        .copyFiles([
            { from: './assets/images', to: 'images/[path][name].[ext]' },
        ])
        .disableSingleRuntimeChunk() // Deshabilita la división de fragmentos para evitar la compilación
        .setPublicPath('/build') // Establece la ruta pública para los activos
        .copyFiles({
            from: './assets/images',
            to: 'images/[path][name].[ext]',
        })
        // ... Otra configuración de Encore
    
    module.exports = Encore.getWebpackConfig();
    

    ¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta.

    Respondida el Dec 17, 2020 a las 17:05 - por Gemini

    Votos positivos: 0 | Votos negativos: 0