2013-06-25 39 views
2

Grunt.js顯然是產生一個新的Node.js的過程時生成一個新的節點處理Grunt.js使用手錶任務使用咕嚕的手錶任務時

http://www.youtube.com/watch?v=fgRlcFt9dkg

只要保存我的文檔默認任務被執行,並且(如你在視頻中看到的那樣)突然出現一個新的node.exe進程。

這是我gruntfile:

module.exports = function(grunt) { 

    grunt.loadNpmTasks('grunt-contrib-clean'); 
    grunt.loadNpmTasks('grunt-contrib-compress'); 
    grunt.loadNpmTasks('grunt-contrib-concat'); 
    grunt.loadNpmTasks('grunt-contrib-copy'); 
    grunt.loadNpmTasks('grunt-contrib-jshint'); 
    grunt.loadNpmTasks('grunt-contrib-less'); 
    grunt.loadNpmTasks('grunt-contrib-qunit'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-text-replace'); 
    grunt.loadNpmTasks('grunt-yui-compressor'); 

    // Project configuration. 
    grunt.initConfig({ 
     // Metadata. 
     meta: { 
      version: '1.0', 
     }, 
     banner: '/*! Copyright (c) <%= grunt.template.today("yyyy") %> */\n', 
     // Task configuration. 
     concat: { 
      options: { 
       banner: '<%= banner %>', 
       stripBanners: true 
      }, 
      develop: { 
       src: ['js/app.main.js', 'js/app/*.js', 'js/app.debug.js', 'js/app.workarounds.js', 'js/app.init.js'], 
       dest: 'build/js/app.js' 
      }, 
      production: { 
       src: ['js/app.main.js', 'js/app/*.js', 'js/app.workarounds.js', 'js/app.init.js'], 
       dest: 'build/js/app.js' 
      }, 
      habla_css: { 
       src: ['build/habla.css'], 
       dest: 'build/habla.css' 
      }, 
      wiwo_css: { 
       src: ['build/wiwo.css'], 
       dest: 'build/wiwo.css' 
      }, 
      iefix: { 
       src: 'js/iefix/*', 
       dest: 'build/js/iefix.js' 
      }, 
      libs: { 
       src: ['js/src/*'], 
       dest: 'build/js/libs.js' 
      } 
     }, 
     clean: { 
      pre: [ 
       'build' 
      ], 
      post: 'dest' 
     }, 
     copy: { 
      thirdparty: { 
       files: [ 
        { 
         expand: true, 
         src: ['js/jquery.min.js'], 
         dest: 'build/', 
        }] 
      } 
     }, 
     min: { 
      options: { 
       report: false, 
       banner: '<%= banner %>' 
      }, 
      app: { 
       src: ['build/js/app.js'], 
       dest: 'build/js/app.min.js' 
      }, 
      iefix: { 
       src: 'js/iefix.js', 
       dest: 'build/js/iefix.min.js' 
      }, 
      libs: { 
       src: ['js/src/*'], 
       dest: 'build/js/libs.min.js' 
      }, 
     }, 
     cssmin: { 
      options: { 
       report: false, 
       banner: '<%= banner %>' 
      }, 
      icons: { 
       src: ['build/icons.css'], 
       dest: 'build/icons.min.css' 
      }, 
      habla: { 
       src: ['build/habla.css'], 
       dest: 'build/habla.min.css' 
      }, 
      wiwo: { 
       src: ['build/wiwo.css'], 
       dest: 'build/wiwo.min.css' 
      } 
     }, 
     less: { 
      icons: { 
       src: ['less/system/icons.less'], 
       dest: 'build/icons.css' 
      }, 
      habla: { 
       src: ['less/habla.less'], 
       dest: 'build/habla.css' 
      }, 
      wiwo: { 
       src: ['less/wiwo.less'], 
       dest: 'build/wiwo.css' 
      } 
     }, 
     replace: { 
      production: { 
       src: 'build/js/app.js', 
       dest: 'build/js/app.js', 
       replacements: [{ 
        from: /\s*App.debug.(log|group|groupEnd)\(.*\);/g, 
        to: '' 
       }, 
       { 
        from: 'debug: true', 
        to: 'debug: false' 
       }] 
      }, 
      date: { 
       src: 'build/js/app.js', 
       dest: 'build/js/app.js', 
       replacements: [{ 
        from: '/*!%CURDATE%*/', 
        to: 'console.log("' + d.replace(/(T|Z)/gi,' ') + '");' 
       }] 
      } 
     }, 
     qunit: { 
      files: ['tests/**/*.html'] 
     }, 
     watch: { 
      main: { 
       files: ['grunt.js', 'js/app.*.js', 'js/**/*', 'less/**/*', 'less/*'], 
       tasks: ['default'], 
       options: { 
        nospawn: true 
       } 
      } 
     } 

    }); 


    grunt.registerTask('con', ['concat:habla_css', 'concat:wiwo_css', 'concat:iefix', 'concat:libs']); 
    grunt.registerTask('icons', ['less:icons cssmin:icons']); 
    grunt.registerTask('test', ['qunit']); 

    // Default task. 
    grunt.registerTask('default', ['less:habla', 'less:wiwo', 'concat:develop', 'con', 'replace:date', 'copy:thirdparty', 'clean:post', 'watch']); 
    grunt.registerTask('release', ['clean:pre', 'less', 'concat:production', 'con', 'replace:production', 'copy:thirdparty', 'min', 'cssmin', 'clean:post']); 

}; 

因此,它是一個咕嚕錯誤或在我gruntfile的錯誤嗎?我在Windows 7 x64上使用的咕嚕版本是0.4.1(+ grunt-cli 0.1.9)。

+0

可能是您產生新的Node進程的任務之一(可能是Less任務?)。 – robertklep

回答

5

您不應該有'watch'作爲默認任務序列中的最終任務。您的手錶配置會調用默認值,然後每次都會產生另一個手錶任務。這條線的問題是:

grunt.registerTask('default', ['less:habla', 'less:wiwo', 'concat:develop', 'con', 'replace:date', 'copy:thirdparty', 'clean:post', 'watch']); 

它應該是這個:

grunt.registerTask('default', ['less:habla', 'less:wiwo', 'concat:develop', 'con', 'replace:date', 'copy:thirdparty', 'clean:post']); 

你應該只是爲了看文件運行grunt:watch

如果你想運行而不做手錶默認的任務序列,然後只需運行grunt

1

就是這樣。謝謝!

我優化它一點點,所以我仍然可以運行grunt(不指定watch參數):

watch: { 
    main: { 
     files: ['grunt.js', 'js/app.*.js', 'js/**/*', 'less/**/*', 'less/*'], 
     tasks: ['develop'] 
    } 
} 

grunt.registerTask('develop', ['less:habla', 'less:wiwo', 'concat:develop', 'con', 'replace:date', 'copy:thirdparty', 'clean:post']); 
grunt.registerTask('release', ['clean:pre', 'less', 'concat:production', 'con', 'replace:production', 'copy:thirdparty', 'min', 'cssmin', 'clean:post']); 
grunt.registerTask('default', ['develop', 'watch']); 

工作正常!謝謝!