2012-12-12 26 views
17

मैं सोच रहा था कि दो अलग-अलग फ़ोल्डरों को देखने और फ़ोल्डर पर प्रत्येक पर एक अलग कार्य निष्पादित करने के लिए घड़ी कार्य को कॉन्फ़िगर करना संभव है। उदाहरण के लिए, जब भी कुछ परिवर्तन/फ़ोल्डर 1 होता है तो कार्य 1 निष्पादित किया जाना चाहिए, जब भी फ़ोल्डर/फ़ोल्डर में कुछ बदल जाता है तो कार्य 2 निष्पादित किया जाना चाहिए।Gruntjs विभिन्न फ़ोल्डर्स देखते हैं और कार्यों को निष्पादित करते हैं

फ़ोल्डर संरचना निम्न रूप में है: | -folder1 | जड़ -folder2

उत्तर

30

घड़ी बर्ताव करता है एक बहु कार्य की तरह है, तो हाँ आप इसे कॉन्फ़िगर फ़ाइलों के विभिन्न सेट को देखने के लिए कर सकते हैं और विभिन्न कार्यों

watch:{ 
    set1: { 
    files: [ 'folder1/**/*' ], //<- this watch all files (even sub-folders) 
    tasks: ['task1'] 
    }, 
    set2: { 
    files: ['folder2/**/*'], 
    tasks: ['task2'] 
    } 
}, 

फिर प्रदर्शन आप एक घड़ी कार्य या दोनों

grunt.registerTask('watchSet1', ['watch:set1']); 
grunt.registerTask('watchSet1And2', ['watch:set1', 'watch:set2']);  
चला सकते हैं

परीक्षण नहीं किया है लेकिन यह काम करना चाहिए।

+0

तो दोनों कार्य खत्म होने पर watchSet1and2 निष्पादित किया जाएगा? – chchrist

+0

नहीं, यह दोनों उदाहरणों को चलाने के तरीके पर एक उदाहरण है। आप कमांड लाइन से 'grunt watchSet1And2' को कॉल करेंगे और दोनों घड़ियों शुरू हो जाएंगी। – jaime

+1

धन्यवाद, बस ठीक काम किया। मैंने यह भी देखा कि केवल घड़ी को देखना ठीक है (गड़बड़ घड़ी)। अगर किसी भी देखे गए फ़ोल्डरों में फ़ाइलों को संशोधित किया जाता है तो यह उचित कार्य चलाएगा। – markovuksanovic

-1

सबसे अच्छा और केवल काम कर समाधान है: आपकी सुविधा के रूप में testu: सूत्रों का कहना है या ध्यान केंद्रित:

focus: { 
      sources: { 
       include: ['js', 'html', 'css', 'grunt'] 
      }, 
      testu: { 
       include: ['js', 'html', 'css', 'testu', 'grunt'] 
      }, 
      testi: { 
       include: ['js', 'html', 'css', 'testu', 'testi', 'grunt'] 
      } 
     }, 
     watch: { 
      js: { 
       files: paths.js, 
       tasks: ['jshint'], 
       options: { 
        livereload: true 
       } 
      }, 
      html: { 
       files: paths.html, 
       options: { 
        livereload: true 
       } 
      }, 
      css: { 
       files: paths.css, 
       tasks: ['csslint'], 
       options: { 
        livereload: true 
       } 
      }, 
      testu: { 
       files: ['test/**/*.js', 'test/**/*.css'], 
       tasks: ['mochaTest'], 
       options: {} 
      }, 
      testi: { 
       files: ['test/**/*.js', 'test/**/*.css'], 
       tasks: ['exec:cleanTestDB', 'protractor_webdriver', 'protractor'], 
       options: {} 
      }, 
      grunt: { 
       files: ['Gruntfile.js', 'server/config/env/*.js'], 
       options: { 
        reload: true 
       } 
      } 
     } 

तो फिर तुम ध्यान देने का उपयोग करें: https://npmjs.org/package/grunt-focus इस प्लगइन और फिर जोड़ें।

जेएम।

2

यदि आप घड़ी कार्यों को एक साथ चलाने के लिए चाहते हैं। RobW द्वारा How to run two grunt watch tasks simultaneously

मैंने समाधान में कुछ समय बिताया, इसलिए यहां उस समाधान से स्निपेट है।

एक कस्टम कार्य कार्यों में गतिशील रूप से कॉन्फ़िगर ऑब्जेक्ट लिखना।

grunt.registerTask('watch:test', function() { 
    // Configuration for watch:test tasks. 
    var config = { 
    options: { 
     interrupt: true 
    }, 
    unit: { 
     files: [ 
     'test/unit/**/*.spec.coffee' 
     ], 
     tasks: ['karma:unit'] 
    }, 
    integration: { 
     files: [ 
     'test/integration/**/*.rb', 
     '.tmp/scripts/**/*.js' 
     ], 
     tasks: ['exec:rspec'] 
    } 
    }; 

    grunt.config('watch', config); 
    grunt.task.run('watch'); 
});