फ़ाइलों के एक प्रारूप के साथ
(पूर्व: *। केवल कॉफ़ी)
यदि आप फ़ाइलों के केवल एक प्रारूप के साथ काम करना चाहते हैं, तो gulp-plumber
आपका समाधान है।
उदाहरण के लिए अमीर संभाला त्रुटियों और coffeescripting के लिए चेतावनी:
gulp.task('scripts', function() {
return gulp.src(['assets/scripts/**/*.coffee'])
.pipe(plumber())
.pipe(coffeelint())
.pipe(coffeelint.reporter())
.pipe(lintThreshold(10, 0, lintThresholdHandler))
.pipe(coffee({
bare: true
}))
.on('error', swallowError)
.pipe(concat('application.js'))
.pipe(gulp.dest('dist/scripts'))
.pipe(rename({ suffix: '.min' }))
.pipe(uglify())
.pipe(gulp.dest('dist/scripts'))
.pipe(notify({ message: 'Scripts task complete' }));
});
कई प्रकार के फ़ाइल स्वरूपों के साथ
(उदा: *। कॉफ़ी और * .js एक ही समय में)
लेकिन अगर आप कई प्रकार के फ़ाइल स्वरूपों (उदाहरण के लिए: *.js
और *.coffee
) के साथ काम नहीं करेंगे , तो मैं अपने समाधान पोस्ट करूँगा।
मैं बस यहाँ पर एक आत्म व्याख्यात्मक कोड पोस्ट करूँगा, पहले कुछ विवरण के साथ।
gulp.task('scripts', function() {
// plumber don't fetch errors inside gulpif(.., coffee(...)) while in watch process
return gulp.src(['assets/scripts/**/*.js', 'assets/scripts/**/*.coffee'])
.pipe(plumber())
.pipe(gulpif(/[.]coffee$/, coffeelint()))
.pipe(coffeelint.reporter())
.pipe(lintThreshold(10, 0, lintThresholdHandler))
.pipe(gulpif(/[.]coffee$/, coffee({ // if some error occurs on this step, plumber won't catch it
bare: true
})))
.on('error', swallowError)
.pipe(concat('application.js'))
.pipe(gulp.dest('dist/scripts'))
.pipe(rename({ suffix: '.min' }))
.pipe(uglify())
.pipe(gulp.dest('dist/scripts'))
.pipe(notify({ message: 'Scripts task complete' }));
});
मैंने इस मुद्दे का सामना किया gulp-plumber
और gulp-if
उपयोग कियाgulp.watch(...
संबंधित समस्या यहाँ देखें: https://github.com/floatdrop/gulp-plumber/issues/23
तो मेरे लिए सबसे अच्छा विकल्प था:
- फ़ाइल के रूप में प्रत्येक भाग, और उसके बाद संक्षिप्त । कई कार्य बनाएं जो प्रत्येक भाग को अलग फ़ाइल (जैसे ग्रंट करता है) में संसाधित कर सकते हैं, और उन्हें संक्षिप्त कर सकते हैं
- धारा के रूप में प्रत्येक भाग, और धाराओं के बाद विलय । एक में दो धाराओं
merge-stream
(जो कि से बनाया गया था event-stream
) को मिलाएं और काम जारी रखें (मैंने कोशिश की कि पहले, और यह मेरे लिए ठीक है, इसलिए यह पिछले एक की तुलना में तेज़ समाधान है)
धारा के रूप में प्रत्येक भाग, और धाराओं के बाद विलय
उसका मेरे कोड का मुख्य भाग है:
gulp.task('scripts', function() {
coffeed = gulp.src(['assets/scripts/**/*.coffee'])
.pipe(plumber())
.pipe(coffeelint())
.pipe(coffeelint.reporter())
.pipe(lintThreshold(10, 0, lintThresholdHandler))
.pipe(coffee({
bare: true
}))
.on('error', swallowError);
jsfiles = gulp.src(['assets/scripts/**/*.js']);
return merge([jsfiles, coffeed])
.pipe(concat('application.js'))
.pipe(gulp.dest('dist/scripts'))
.pipe(rename({ suffix: '.min' }))
.pipe(uglify())
.pipe(gulp.dest('dist/scripts'))
.pipe(notify({ message: 'Scripts task complete' }));
});
फ़ाइल के रूप में प्रत्येक भाग, और उसके बाद संक्षिप्त
यदि इसे भागों में अलग करना है, तो प्रत्येक भाग में एक परिणाम फ़ाइल बनाई जानी चाहिए। पूर्व के लिए:
gulp.task('scripts-coffee', function() {
return gulp.src(['assets/scripts/**/*.coffee'])
.pipe(plumber())
.pipe(coffeelint())
.pipe(coffeelint.reporter())
.pipe(lintThreshold(10, 0, lintThresholdHandler))
.pipe(coffee({
bare: true
}))
.on('error', swallowError)
.pipe(concat('application-coffee.js'))
.pipe(gulp.dest('dist/scripts'));
});
gulp.task('scripts-js', function() {
return gulp.src(['assets/scripts/**/*.js'])
.pipe(concat('application-coffee.js'))
.pipe(gulp.dest('dist/scripts'));
});
gulp.task('scripts', ['scripts-js', 'scripts-coffee'], function() {
var re = gulp.src([
'dist/scripts/application-js.js', 'dist/scripts/application-coffee.js'
])
.pipe(concat('application.js'))
.pipe(gulp.dest('dist/scripts'))
.pipe(rename({ suffix: '.min' }))
.pipe(uglify())
.pipe(gulp.dest('dist/scripts'))
.pipe(notify({ message: 'Scripts task complete' }));
del(['dist/scripts/application-js.js', 'dist/scripts/application-coffee.js']);
return re;
});
पुनश्च:
यहां उपयोग किए गए नोड मॉड्यूल और फ़ंक्शन:
// Load plugins
var gulp = require('gulp'),
uglify = require('gulp-uglify'),
rename = require('gulp-rename'),
concat = require('gulp-concat'),
notify = require('gulp-notify'),
plumber = require('gulp-plumber'),
merge = require('ordered-merge-stream'),
replace = require('gulp-replace'),
del = require('del'),
gulpif = require('gulp-if'),
gulputil = require('gulp-util'),
coffee = require('gulp-coffee'),
coffeelint = require('gulp-coffeelint),
lintThreshold = require('gulp-coffeelint-threshold');
var lintThresholdHandler = function(numberOfWarnings, numberOfErrors) {
var msg;
gulputil.beep();
msg = 'CoffeeLint failure; see above. Warning count: ';
msg += numberOfWarnings;
msg += '. Error count: ' + numberOfErrors + '.';
gulputil.log(msg);
};
var swallowError = function(err) {
gulputil.log(err.toString());
this.emit('end');
};