ফাইলগুলির একটি ফর্ম্যাট সহ
(উদা: * শুধুমাত্র কফি)
আপনি যদি কেবলমাত্র একটি ফর্ম্যাট ফাইলের সাথে কাজ করতে চান তবে gulp-plumber
আপনার সমাধান।
উদাহরণস্বরূপ, সমৃদ্ধ হ্যান্ডেল ত্রুটি এবং কফিসিপিটিংয়ের জন্য সতর্কতা:
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
এবং *.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/floatDP/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');
};