मुझे एक ही समस्या है। मैंने इसे regarde:file
ईवेंट का उपयोग करके हल किया।
सबसे पहले मैं regarde:file
ईवेंट का उपयोग करके बदली गई फ़ाइलों के लिए सुनता हूं। यह कॉन्फ़िगरेशन को दो कार्यों के लिए खिलाएगा: clean:coffee
यदि स्रोत स्थान में फ़ाइलें हटा दी गई हैं और coffee:refresh
हैं, तो फ़ाइलों को बदल दिया/जोड़ा गया है।
फिर regarde
कार्य अपने कार्यों को ट्रिगर करेगा, जो refresh:coffee
लॉन्च करेगा (coffee:refresh
से गलत नहीं होना चाहिए)। यह कार्य जांच करेगा कि clean:coffee
और/या coffee:refresh
के लिए कॉन्फ़िगरेशन जोड़ा गया है और यदि आवश्यक हो तो इन कार्यों को चलाएं (फ़ंक्शन grunt.task.run
के माध्यम से)। अगर ध्वज को रीसेट भी किया जाएगा, जिससे कॉन्फ़िगरेशन को फिर से साफ करने के लिए अगले regarde:file
ईवेंट प्राप्त होगा।
गहराई से विवरण:
सबसे पहले, regarde
config:
// watch for changed coffeescript files
coffee: {
files: 'path/to/coffee/**/*.coffee',
tasks: ['refresh:coffee', 'livereload']
},
तब मैं regarde:file
घटना है, जहां मैं अपने config में clean:coffee
और coffee:refresh
फ़ाइल सूचियां अपडेट के लिए सुन।
फ़ीड विन्यास regarde:file
घटना पर आधारित:
grunt.event.on('regarde:file', function (status, target, filepath) {
if (resetFlag) {
// clean file list from previous cycle, so clean clean:coffee and coffee:refresh
// file lists
...
resetFlag = false;
}
if (status === 'deleted') {
if (filepath) {
// calculate filepath's destination and
// add it to clean:coffee filelist
}
} else {
if (!grunt.file.isDir(filepath)) {
// add filepath to coffee:refresh filelist
}
}
}
यह grunt.config()
समारोह के माध्यम से विन्यास को अद्यतन करने के लिए आसान है। coffee:refresh
और clean:coffee
फ़ीड करने के लिए कोड स्निपेट के नीचे।
config जोड़ना coffee:refresh
रहे हैं:
var config = grunt.config('coffee') || {};
var value = config.refresh || {};
value.files = value.files || [];
...
var cwd = path.dirname(filepath),
src = path.basename(filepath),
dest = cwd.replace('path/to/source', 'path/to/dest');
value.files.push({
expand:true,
src:src,
dest:dest,
cwd:cwd,
ext:'.js'
});
grunt.config('coffee', config);
config जोड़ना clean:coffee
रहे हैं:
var cwd = path.dirname(filepath),
src = path.basename(filepath),
dest = cwd.replace('path/to/source', 'path/to/dest');
value.src.push(path.join(dest, src.replace('coffee', 'js')));
// clean only what has been removed
config = grunt.config('clean') || {};
config.coffee = value;
grunt.config('clean', config);
टास्क refresh:coffee
ट्रिगर किया जाता है:
grunt.registerMultiTask('refresh', 'refreshing the changed file(s)', function() {
this.requires('regarde');
var tasks = [];
var clean = grunt.config('clean');
// check if there is clean:refresh config available
if (clean && clean[this.target]) {
tasks.push('clean:' + this.target);
}
var config = grunt.config(this.target);
// check if there is coffee:refresh config available
if (config && config.refresh) {
tasks.push(this.target + ':refresh');
}
// run the tasks
grunt.task.run(tasks);
// set the resetFlag back to true
resetFlag = true;
});
'src: '<% = grunt.regarde.changed%>' 'मेरे लिए काम किया (स्ट्रिंग में लपेटने की आवश्यकता है)। – Adam
धन्यवाद, मैंने इसे ऊपर बदल दिया। – nackjicholson