2013-08-27 43 views
5

Tôi thực sự rất thích có thể có một tệp grunt phát triển và sử dụng cùng một tệp phiên bản sản xuất của tập lệnh.Tác vụ thay thế grunt.js cho môi trường phát triển/sản xuất

Tôi đã thử đề xuất trên SO nhưng tập lệnh của tôi sẽ không thành công khi cố gọi một đối số dev/prod. Tôi tin rằng câu trả lời là cho một phiên bản cũ của grunt, hoặc có lẽ các plugin tôi đang sử dụng.

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

Thực sự, chừng nào tôi có thể nhận được hai phiên bản chạy bằng cách gọi chúng với, ví dụ:

grunt //local 
grunt prod //live 

sau đó tôi có thể chơi xung quanh với các kịch bản và những gì để tải.

+1

Tôi nghĩ rằng những gì bạn đang tìm kiếm "tùy chọn" là - https://github.com/gruntjs/grunt/wiki/grunt.option - Tôi tin rằng đó vẫn là cách chính xác. Ngoài ra kiểm tra yeoman vì họ có một thiết lập sạch sẽ với tất cả các loại phần hữu ích cho câu đố này. Tất cả bạn sẽ phải nhớ là máy chủ grunt và xây dựng grunt. – Dylan

Trả lời

14

Bạn cũng có thể chỉ cần đăng ký một nhiệm vụ mà các cuộc gọi một loạt các nhiệm vụ

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

trước nhiệm vụ mặc định của bạn, đó sẽ là

$ grunt prod 
+0

cảm ơn tuyệt vời Dylan, tôi sẽ cần phải xem xét điều này. Bất kỳ cơ hội nào bạn muốn cho tôi một ví dụ rõ ràng? –

+0

rực rỡ, tôi phải thừa nhận tôi đã không nhận được nó cho đến khi tôi để cho các yeoman làm phép thuật của nó và sau đó nhìn vào tập tin. Vì vậy, cảm ơn đã chỉ cho tôi để yeoman. và registerTask. Rực rỡ. –

+0

cảm ơn vì sản phẩm đã lên tàu với Yeoman, tôi đã trì hoãn;) –

Các vấn đề liên quan