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


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.