2015-08-20 32 views
7

Per esempio, ho il seguente codice:Perché uglifyjs non rimuove il codice morto?

if ("a" !== "a") { 
    console.log('really?'); 
} 

var a = 5; 

poi scrivo uglifyjs code.js -o code.min.js. Di conseguenza, ho il seguente:

if("a"!=="a"){console.log("really?")}var a=5; 

Come abilitare la rimozione del codice morto all'interno dell'istruzione if?

+0

Qual è il codice guasto? '' Console.log''? o l'intero se blocco? Il primo è un codice perfettamente valido con uno scopo perfettamente valido. È molto diverso dall'ottimizzazione''if (a == 1 || a == 1) ''. Inoltre, penso che l'ugolatore abbia un'ottimizzazione molto limitata. – CppLearner

+0

Il codice all'interno del blocco if non verrà mai eseguito. Quindi, è morto. – user2991036

+0

è necessario uno strumento di analisi statica, non solo un parser AST. – CppLearner

risposta

8

Nonostante questa domanda ha già ottenuto una risposta accettata, penso che la pena ricordare che

  1. UglifyJS2 fa rimuovere il codice morti

  2. Per attivare tale funzione, è necessario impostare l'opzione appropriata sia in CLI (uglifyjs --compress unused,dead_code) o nell'oggetto options se si invoca a livello di programmazione uglify().

+0

Per quanto mi riguarda, ho anche dovuto impostare la valutazione e le condizioni su true e impostare la maggior parte delle altre cose su false. Volevo solo l'eliminazione del codice morto, non qualsiasi altra compressione. – Patrik

4

Come per il README per uglifyjs, il maintainer ha spostato lo sforzo di sviluppo su UglifyJS2. Il README dice anche che esso rimuove solo:

po 'di codice irraggiungibile e mettere in guardia su di esso (il codice che segue un ritorno, tiro, rompere o continuare economico, ad eccezione delle funzioni/variabili dichiarazioni).

Uglify2 fa un lavoro più completo. Ho testato il tuo codice su demo site e in effetti rimuove l'intera istruzione if. Supporta anche la "compilazione condizionale" (o forse una rimozione più corretta del codice condizionale), consentendo di definire globals sulla riga di comando durante l'ugolarizzazione.

+0

Grazie per l'aiuto! Questa è la soluzione per il mio problema – user2991036

Problemi correlati