2011-09-22 10 views
6

Estoy tratando de comprimir varios archivos JS utilizando el compresor YUI.¿Comprimir múltiples archivos JavaScript con YUIcompressor?

Creo que estoy obteniendo la sintaxis incorrecta. Quiero comprimir todos los archivos en un directorio que comienza con at_. Sin embargo, cuando se ejecuta YUI Compressor, encuentro que YUI Compressor ha colocado solo la versión comprimida de un archivo en la salida.

Para ser específico, supongamos que tengo tres archivos: at_1.js, at_2.js y at_3.js. Me gustaría que la salida comprimida de los tres archivos js en at_min.js

estoy usando la siguiente sintaxis:

java -jar c:\Tools\yuicompressor-2.4.2.jar --type js --charset utf-8 -o c:\temp\at_min.js c:\temp\scripts\at_* 

Cuando abro at_min.js, encuentro sólo los contenidos comprimidos de at_1.js ¿Qué estoy haciendo mal?

Respuesta

5

Si está utilizando Windows puede usar YUI Compressor for .Net para hacerlo.

O la combinación de archivos antes de comprimir con un simple comando:

copy /b at_1.js+at_2.js+at_3.js at_combined.js 
java -jar c:\Tools\yuicompressor-2.4.2.jar --type js --charset utf-8 -o at_min.js at_combined.js 
+5

para unix, use 'cat src1 src2 src3> dest' –

0

He escrito un pequeño programa para comprimir múltiples archivos javascript utilizando yuicompressor y ganglios js.

var compressor = require('yuicompressor'); 

//Compressor Options: 
var compressorOptions = { 

charset: 'utf8', 
type: 'js', 
nomunge: false 
} 

/* List of files and file path. Just replace the file names and path with yours */ 
    var file = [{ 
    "path": "assets/www/modules/eApp/controllers/", 
    "type": "js", 
    "name": ["BuyOnlineController", "CustomerDetailsController", "DashboardController", "DashboardListingController", "DocumentUploadController", "HomeController", "KYCDetailsController", "PaymentAcknowledgementController", "PaymentController", "ProductListingController", "ReviewAndAcceptanceController"] 
}, 
{ 
    "path": "assets/www/modules/login/controllers/", 
    "type": "js", 
    "name": ["EappLoginController", "InboxController", "LandingController", "LoginController", "MenuController", "MyAccountController", "SyncForEappController"] 
}, 
{ 
    "path": "assets/www/lib/vendor/general/", 
    "type": "js", 
    "name": ["overlays"] 
}]; 

function minify(i, j){ 
    i = (i == undefined) ? 0 : i; 
    j = (j == undefined) ? 0 : j; 
    filePath = file[i].path; 
    fileType = file[i].type; 
    name = file[i].name[j]; 
    fileName = filePath+name+"."+fileType; 
    minifiedFileName = filePath+name+".min."+fileType; 

    if(j == file[i].name.length - 1){ 
     i += 1; 
     j = 0; 
    } 
    else 
     j += 1; 

    compressor.compress(fileName, compressorOptions, function(err, data, extra) { 
     var fs = require('fs'); 
     fs.writeFile(minifiedFileName, data, function(err) { 
      if(err) { 
       console.log(err); 
      } else { 
       console.log("The file "+minifiedFileName+" was saved successfully!"); 
       if(i != file.length) 
        minify(i, j); 

      } 
     }); 
    }); 


} 

minify(0,0); 
Cuestiones relacionadas