2013-08-27 19 views
5

Mi piacerebbe molto avere un file di sviluppo grunt e utilizzare lo stesso file una versione di produzione dello script.Attività grunt.js alternative per ambienti di sviluppo/produzione

Ho provato il suggerimento su SO ma il mio script fallirà solo nel tentativo di chiamare un argomento dev/prod. Credo che la risposta sia per una versione precedente di grunt, o forse i plugin che sto usando.

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'); 
}; 

In realtà, fino a quando posso ottenere due versione in esecuzione chiamandoli con, ad esempio:

grunt //local 
grunt prod //live 

poi posso giocare con gli script e cosa caricare.

+1

Penso che quello che stai cercando è "opzione" - https://github.com/gruntjs/grunt/wiki/grunt.option - Credo che sia ancora il modo corretto. Controllate anche voi come hanno una configurazione pulita con tutti i tipi di pezzi utili per questo puzzle. Tutto quello che dovrai ricordare è il server grunt e il build grunt. – Dylan

risposta

14

È anche possibile registrare un compito che richiede una serie di compiti

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

prima operazione di default, che sarebbe

$ grunt prod 
+0

fantastico, grazie Dylan, avrò bisogno di esaminare questo. Qualche possibilità tu voglia darmi un chiaro esempio? –

+0

geniale, devo ammettere che non l'ho capito finché non ho lasciato che lo yeoman facesse la sua magia e poi ho guardato il file. Quindi grazie per avermi segnalato a te. e registratiTask. Brillante. –

+0

grazie per il prod a salire a bordo con Yeoman, stavo procrastinando;) –