Tentativo di preparare un buon ambiente di compilazione per la mia libreria js. Secondo le recensioni sul web, lo UglifyJS sembra essere uno dei migliori moduli di compressione in circolazione, funzionante con NodeJS. Così qui è migliore metodo consigliato di Minimizzando le code:Uglify-js non altera i nomi delle variabili
var jsp = require("uglify-js").parser;
var pro = require("uglify-js").uglify;
var orig_code = "... JS code here";
var ast = jsp.parse(orig_code); // parse code and get the initial AST
ast = pro.ast_mangle(ast); // get a new AST with mangled names
ast = pro.ast_squeeze(ast); // get an AST with compression optimizations
var final_code = pro.gen_code(ast); // compressed code here
Come si è visto qui, pro.ast_mangle(ast)
dovrebbe storpiare i nomi delle variabili, ma non è così. Tutto quello che ottengo da questo pipe è il codice javascript, senza spazi. All'inizio pensavo che il mio codice non fosse ottimizzato per la compressione, ma poi l'ho provato con Google Closure e ottenuto una discreta compressione (con nomi di variabili storpiati e tutto il resto).
UglifyJS esperti, qualche suggerimento su ciò che sto facendo male?
UPDATE:
codice effettivo è troppo grande per fare riferimento qui, ma anche un frammento come questo non ottiene straziati:
;(function(window, document, undefined) {
function o(id) {
if (typeof id !== 'string') {
return id;
}
return document.getElementById(id);
}
// ...
/** @namespace */
window.mOxie = o;
}(window, document));
Questo è ciò che ottengo (solo spazi vengono spogliati Immagino):
(function(window,document,undefined){function o(id){return typeof id!="string"?id:document.getElementById(id)}window.mOxie=window.o=o})(window,document)
Penso che sarebbe d'aiuto se pubblichi un piccolo cicalino di codice e i risultati con i quali trovi problemi. –
Ho pensato che forse c'era qualche opzione che mi mancava. Aggiornato ora con il piccolo frammento.Ovviamente è qualcosa con il mio ambiente? .. Anche se non sono sicuro da dove iniziare il debugging o cosa potrebbe influenzare la capacità di uglify-js di manipolare, quando richiesto. – jayarjo
Bene, tramite il sito Web di UglifyJS, ho ottenuto: '(funzione (a, b, c) {funzione d (a) {return typeof a! =" Stringa "? A: b.getElementById (a)} a.mOxie = ao = d}) (finestra, documento) 'Sei sicuro di aver attivato gli interruttori giusti? –