2014-06-11 2 views
3

J'ai regardé toute la journée pour la réponse ici et je suis convaincu que c'est juste ma config est foiré.sortie grunt-contrib-uglify est vide

Version abrégée: J'ai une configuration configurée. grunt-contrib-concat ŒUVRES. grunt-contrib-uglify DIT IT WORKS mais génère un fichier vide.

Version longue: Structure du projet est:

/projectRoot 
    ->/dev 
     ->/js 
      /foo.js 
      /bar.js 
    ->/dist 
     ->/js 

Je veux prendre foo.js et bar.js et les sortir dans un fichier dans le répertoire/dist répertoire/js appelé "app.js".

Voici ma config:

module.exports = function(grunt) { 
    grunt.initConfig({ 
     pkg: grunt.file.readJSON('package.json'), 

     concat: { 
      options:{ 
       separator: ';' 
      }, 
      dist:{ 
       src:["js/foo.js", "js/barjs"], 
       dest:"../prod/js/app.js" 
      } 
     }, 

     uglify:{ 
      dist:{ 
       files:{ 
        "../prod/js/app.min.js":["js/foo.js", "js/bar.js"] 
       } 
      } 
     } 
    }); 



    /** 
    * Set up tasks 
    * @type {string[]} 
    */ 
    var taskList = [ 
     "grunt-contrib-concat", 
     "grunt-contrib-uglify" 
    ]; 

    for(var task in taskList){ 
     grunt.loadNpmTasks(taskList[task]); 
    } 

    grunt.registerTask('default', ['concat']); 
    grunt.registerTask('dist', ['concat','uglify:dist']); 
}; 

Oui, Grunt est installé dans mon répertoire DEV.

Quand je lance

grunt dist 

Je reçois la sortie de la console suivante:

Running "concat:dist" (concat) task 
File ../prod/js/app.js created. 

Running "uglify:dist" (uglify) task 
File js/app.min.js created: 319 B → 0 B 

Done, without errors. 
Process finished with exit code 0 

En fin de compte, il ne finit par créer le fichier /projectRoot/prod/js/app.min. js

... Mais c'est vide.

Des idées sur ce que je fais mal ?? Cette syntaxe suit EXACTEMENT ce qui est dans le readme et tout autre document que je peux trouver. La tâche de concat fonctionne très bien.

Toute aide serait appréciée. Merci!

--EDIT-- J'ai mis à jour Grunt afin qu'il vive dans le projet, mais il n'y a pas de différence de sortie.

==============

MISE À JOUR

J'ai trouvé la raison pour laquelle il a été délivrer en sortie un fichier vide. Apparemment, les fonctions anonymes auto-appelantes sont "minifiées", ou du moins dans ce cas elles le sont. C'est peut-être parce qu'il n'y a pas de code actif ici. Je vais regarder plus loin. Je suppose que les fonctions qui font réellement des choses, qui référencent des vars globaux, etc. resteront.

==============

FINAL MISE A JOUR

Problème résolu. Même avec des options pour minimiser tout le code, il supprimera toujours les variables non référencées, etc. Les éléments de mes fichiers de test étaient inutilisés. Si j'ajoute une référence à ces fonctions, elles apparaissent.

Espérons que cela aide quelqu'un.

+0

Votre config et la sortie de la console semblent indiquer que uglify va déposer le nouveau fichier dans le même répertoire que les sources (dans/dev/js). Cependant, vous dites que le fichier est créé dans l'arborescence/prod/js. Y a-t-il une faute de frappe ici? –

+0

Ah oui, dans mon déconner avant que je posté, je dois avoir changé le répertoire de sortie final. Mis à jour maintenant – dudewad

+0

Dans vos paramètres 'uglify', fournissez-vous le chemin" jas/foo.js "ou" dev/jas/foo.js "? –

Répondre

3

Problème résolu. Même avec des options pour minimiser tout le code, il supprimera toujours les variables non référencées, etc. Les éléments de mes fichiers de test étaient inutilisés. Si j'ajoute une référence à ces fonctions, elles apparaissent. Comme aucune des fonctions n'est référencée, elles sont supprimées et je me retrouve avec un fichier vide.

Espérons que cela aide quelqu'un.

Questions connexes