গুলপ.জেএস টাস্ক, এসআরসি-তে ফিরবেন?


132

আমি আকস্মিক নতুন এবং উদাহরণস্বরূপ সেট আপগুলি সন্ধান করছি। কিছু লোকের নিম্নলিখিত কাঠামো থাকে:

gulp.task("XXXX", function() {
    gulp.src("....

অন্যান্য লোকের কাছে এটি রয়েছে:

gulp.task("XXXX", function() {
   return gulp.src("....

আমি কি পার্থক্য হতাশ করছি আগমন src পেশাদারী এটি এই সাইটে ??

উত্তর:


158

আপনি returnযা নির্দেশ করে টাস্ক ASYNC হয়। gulp.src()একটি স্ট্রিম ফিরিয়ে দেয়, তাই এটি অ্যাসিঙ্ক।

এটি ছাড়া টাস্ক সিস্টেমটি কখন শেষ হবে তা জানত না। দস্তাবেজগুলি পড়ুন ।


অসাধারণ! উত্তরের জন্য ধন্যবাদ সিন্দ্রে। এখন কব্জির মতো দুলছে now এটা ভাল।
boldfacedesignuk

আমি ঠিক যা খুঁজছিলাম তা আশ্চর্যজনক :)
সেবাস্তিয়ান লরবার

14
তার মানে কি, ব্যবহার করার সময় আপনাকে অবশ্যই ফিরতে হবেgulp.src() ? ফিরে না আসলে কি হবে gulp.src()?
jbandi

11
আমি দ্বিতীয় @ জবন্দির - এখানে জিজ্ঞাসা করার সুস্পষ্ট প্রশ্নটি "ফিরে না আসার কি কোনও কারণ আছে, না gulp.src(...আমাদের সবসময় করা উচিত?" এই উত্তরটি যদি সেই বিন্দুটিকে সম্বোধন করে তবে এই উত্তরটি আরও কার্যকর হবে; বর্তমানে এটি কার্য সম্পাদন করে না কেন সেখানে অনেকগুলি উদাহরণ রয়েছে যেগুলি কল করে gulp.src(...কিন্তু তা ফিরিয়ে দেয় না।
মার্ক আমেরিকা 17'15

2
@ জবান্দি: আপনি যদি তা না করেন returnতবে নির্ভরতা সিস্টেমটি নির্ভরতা সম্পন্ন করার আগে কোনও কাজ শুরু করতে পারে। অনেক গুলো কাজ (বেশিরভাগ কোড-উত্পন্ন) সহ আমি একটি গলফিল পেয়েছি। যেহেতু আমি স্ট্রিমটি ফিরিয়ে দিচ্ছি না, একটি নির্ভরশীল টাস্ক ইতিমধ্যে ফাইলটি পড়ছিল যখন এর নির্ভরতা এখনও তৈরি হয়েছিল। আমাকে সব ধরণের সমস্যায়
ফেলেছে

37

আপনার যদি নির্ভরশীল কার্য থাকে তবে কাজগুলি চালনার আগে তাদের নির্ভরশীল কাজগুলি শেষ হওয়ার জন্য অপেক্ষা করার জন্য আপনার স্ট্রিমটি ফিরে আসতে হবে।

যেমন

// without return
gulp.task('task1', function() {
    gulp.src('src/coffee/*.coffee')
      /* eg compile coffeescript here */
     .pipe(gulp.dest('src'));
});

gulp.task('task2', ['task1'], function() {
    gulp.src('src/*.js')
      /* eg minfify js here */
     .pipe(gulp.dest('dest'));
});

সেই উদাহরণে আপনি টাস্ক 1 চালুর আগে টাস্ক 1 সম্পূর্ণ হওয়ার (যেমন কফিসিপিটি যা যা যা সংকলন করেছেন) প্রত্যাশা করবেন ... তবে আমরা যদি রিটার্ন যোগ না করি - নীচের উদাহরণের মতো - তবে তারা সিঙ্ক্রোনিকভাবে চলবে না অ্যাসিক্রোনিকভাবে; এবং কম্পাইল coffeescript minified হবে না কারণ task2 টাস্ক 1 সম্পন্ন করার জন্য অপেক্ষা থাকবে না এবং এত কম্পাইল আউটপুট কুড়ান করা হবে না task1 । সুতরাং আমাদের সবসময় এই পরিস্থিতিতে ফিরে আসা উচিত।

// with return
gulp.task('task1', function() {
    return gulp.src('**/*.coffee')
      /* your operations here */
     .pipe(gulp.dest('dest'));
});

gulp.task('task2', ['task1'], function() {
    return gulp.src('**/*.js')
      /* your operations here */
     .pipe(gulp.dest('dest'));
});

সম্পাদনা: এখানকার রেসিপিটি এটি আরও ব্যাখ্যা করে। https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md


26

আমি কার্যকারী প্রতি একাধিক স্ট্রিম থাকলে আমি এটি সহায়ক বলে মনে করেছি। আপনাকে একাধিক স্ট্রিমগুলি একত্রিত / মার্জ করতে হবে এবং সেগুলি ফেরত দিতে হবে।

var gulp = require('gulp');
var merge = require('gulp-merge');

gulp.task('test', function() {
    var bootstrap = gulp.src('bootstrap/js/*.js')
        .pipe(gulp.dest('public/bootstrap'));

    var jquery = gulp.src('jquery.cookie/jquery.cookie.js')
        .pipe(gulp.dest('public/jquery'));

    return merge(bootstrap, jquery);
});

গুলপস টাস্ক সংজ্ঞা কাঠামোটি ব্যবহার করে বিকল্পটি হ'ল:

var gulp = require('gulp');

gulp.task('bootstrap', function() {
    return gulp.src('bootstrap/js/*.js')
        .pipe(gulp.dest('public/bootstrap'));
});

gulp.task('jquery', function() {
    return gulp.src('jquery.cookie/jquery.cookie.js')
        .pipe(gulp.dest('public/jquery'));
});

gulp.task('test', ['bootstrap', 'jquery']);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.