2013-08-27 6 views
5

Ich würde wirklich gerne in der Lage sein, eine Entwicklungs-Grunt-Datei zu haben und die gleiche Datei eine Produktionsversion des Skripts zu verwenden.Alternate grunt.js Aufgaben für Entwicklungs-/Produktionsumgebungen

Ich habe den Vorschlag auf SO versucht, aber mein Skript wird nur fehlschlagen, wenn ein dev/prod-Argument aufgerufen werden soll. Ich glaube, dass die Antwort für eine ältere Version von Grunt ist, oder vielleicht die Plugins, die ich verwende.

module.exports = function (grunt) { 

    // load all grunt tasks 
    require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); 

    grunt.initConfig({ 
     pkg: grunt.file.readJSON('package.json'), 
     compass: { 
      dev: { 
       options: { 
        config: 'config.rb', 
        force: true, 
        livereload: true 
       } 
      } 
     }, 
     uglify: { 
      build: { 
       src: ['docroot/js/*.js', 'docroot/components/**/*.js'], 
       dest: 'docroot/dis/main.min.js' 
      } 
     }, 
     watch: { 
      options: { 
       dateFormat: function(time) { 
        grunt.log.writeln('The watch finished in ' + time + 'ms at' + (new Date()).toString()); 
        grunt.log.writeln('Waiting for more changes...'); 
       }, 
       livereload: true 
      }, 
      sass: { 
       files: ['docroot/sass/*.scss'], 
       tasks: ['compass:dev'] 
      }, 
      /* watch and see if our javascript files change, or new packages are installed */ 
      js: { 
       files: '<%= uglify.build.src %>', 
       tasks: ['uglify'] 
      }, 
      /* watch our files for change, reload */ 
      livereload: { 
       files: ['*.html', 'docroot/css/*.css', 'docroot/img/*', 'docroot/js/{main.min.js, plugins.min.js}'], 
       options: { 
        livereload: true 
       } 
      } 
     } 
    }); 


    grunt.registerTask('default', 'watch'); 
}; 

Wirklich, so lange ich kann zwei Version von ihnen, zum Beispiel Aufruf Laufen zu bekommen:

grunt //local 
grunt prod //live 

dann kann ich mit den Skripten spielen, um und was zu laden.

+1

Ich denke, was Sie suchen ist „Option“ - https://github.com/gruntjs/grunt/wiki/grunt.option - Ich glaube, es ist immer noch der richtige Weg. Auch Kasse Yeoman, wie sie eine saubere Einrichtung mit allerlei nützlichen Stücken zu diesem Puzzle haben. Alles, an das du dich erinnern musst, ist der Grunt-Server und das Grunzen. – Dylan

Antwort

14

Sie können auch registrieren, eine Aufgabe, die eine Reihe von Aufgaben ruft

grunt.registerTask('prod', ['tasks1','task2']); 

vor Ihrer Standardaufgabe, das wäre

$ grunt prod 
+0

genial danke Dylan, ich muss das prüfen. Hast du eine Chance, mir ein gutes Beispiel zu geben? –

+0

brilliant, ich muss zugeben, dass ich es nicht verstanden habe, bis ich den Yeoman seine Magie machen ließ und dann die Akte ansah. Also danke, dass du mich auf Yeoman weist. und registerTask. Brillant. –

+0

danke für den Prod, mit Yeoman an Bord zu kommen, ich hatte zaugebracht;) –