একের পর এক গুলপ টাস্কগুলি ক্রমান্বয়ে কীভাবে চালানো যায়


398

এই যেমন স্নিপেটে:

gulp.task "coffee", ->
    gulp.src("src/server/**/*.coffee")
        .pipe(coffee {bare: true}).on("error",gutil.log)
        .pipe(gulp.dest "bin")

gulp.task "clean",->
    gulp.src("bin", {read:false})
        .pipe clean
            force:true

gulp.task 'develop',['clean','coffee'], ->
    console.log "run something else"

ইন developটাস্ক আমি চালাতে চান cleanএবং পরে এটা হয়ে যাবে, চালানো coffeeএবং যখন যে কাজ করছে, অন্য কিছু চালানো। তবে আমি তা বুঝতে পারি না। এই টুকরা কাজ করে না। দয়া করে উপদেশ দাও.


10
রান-সিকোয়েন্স এনপিএম মডিউলটি এখনই এই সমস্যাটিকে সংশোধন করে - অন্যান্য সমস্ত উত্তর এখন অপ্রাসঙ্গিক - নীচে
ওভারজিওয়েলের

1
গুলপ ৪.০ স্থানীয়ভাবে ক্রমান্বয়ে চলমান কার্যগুলি সমর্থন করে, run-sequenceঅপ্রচলিত রেন্ডারিং করে
মশানিশির

গুলপ 4 এটি ঠিক করার চেয়ে বেশি জিনিস ভাঙছে, মনে হবে। কয়েক ঘন্টা এটির সাথে লড়াই করার পরে, আমি আবার ফিরে এসেছি 3..৯.১। আমি বুঝতে পারি যে বড় সংস্করণগুলি ব্যাকক্যাম্পটি ভেঙে ফেলতে পারে / তবে ক্রিপ্টিক এবং অকেজো ত্রুটি বার্তাগুলি সহ আমি ধন্যবাদ জানায় না। v4 প্রস্তুত নয়।
শনি থিরু

উত্তর:


121

এটি এখনও কোনও আনুষ্ঠানিক প্রকাশ নয়, তবে আগত গুলপ ৪.০ আপনাকে সহজেই gulp.series এর সাথে সিঙ্ক্রোনাস কাজ করতে দেয়। আপনি এটি সহজভাবে এটি করতে পারেন:

gulp.task('develop', gulp.series('clean', 'coffee'))

আমি কীভাবে আপগ্রেড এবং সেই ঝরঝরে বৈশিষ্ট্যগুলি ব্যবহার করতে পারি তা উপস্থাপনের জন্য একটি ভাল ব্লগ পোস্ট পেয়েছি: উদাহরণস্বরূপ গল্প 4 এ স্থানান্তরিত


3
সমস্ত নতুনদের জন্য পছন্দের পদ্ধতি। তাদের সত্যিকার অর্থেই ঝাঁকুনি 4 দিয়ে শুরু করা উচিত, সমস্ত 3 এড়িয়ে যাওয়া * * ঝামেলা এবং এন্টিপ্যাটার্নগুলির বিস্তৃত পরিসীমা।
6'16 এ ধাতব করুন

187
এটির 2017 এবং তারা এখনও এটি চালু করেনি। গ্রেট।
টমাসজ মুলারসিজিক

14
আমি সত্যিই বলছি না। আপনার যদি বি এর পরে কেবল রান চালানোর জন্য একেবারে প্রয়োজন হয়, তবে এ বি এর উপর নির্ভরশীল আপনি কেন কেবল এটিকে নির্দিষ্ট করতে পারবেন না যে বি এ এর ​​নির্ভরতা? gulp.task('coffee', ['clean'], function(){...}); gulp.task('develop', ['coffee']);
musicin3d

3
@ musicin3d আপনি যা বলছেন তা কার্যকর হয় তবে আপনি পূর্বের সাথে একটি কার্য আবশ্যক। উদাহরণস্বরূপ, আমি সর্বদা আগে লিন্ট না করে তৈরি করতে সক্ষম হতে চাই। এটি একটি বাহ্যিক সরঞ্জাম দিয়ে স্বতন্ত্র কাজগুলি এবং মৃত্যুদন্ডের ক্রম স্থির করার আরও ভাল সমাধান।
এক্সেফেক্ট

11
এর 2018 এবং তারা শেষ পর্যন্ত এটি পরিচয় করিয়ে দিয়েছে। গ্রেট।
dargmuesli

411

ডিফল্টরূপে, গুল্প এক সাথে কাজগুলি পরিচালনা করে, যদি না তাদের স্পষ্ট নির্ভরতা থাকে। আপনি যেমন cleanনির্ভর করতে চান না এমন কাজের জন্য এটি খুব কার্যকর নয় তবে আপনার অন্য সমস্ত কিছুর আগে চালানো দরকার।

আমি লিখেছি প্লাগইন বিশেষভাবে নি: শ্বাসে সঙ্গে এই সমস্যা সমাধানের জন্য। আপনি এটি ইনস্টল করার পরে এটি এটি ব্যবহার করুন:run-sequence

var runSequence = require('run-sequence');

gulp.task('develop', function(done) {
    runSequence('clean', 'coffee', function() {
        console.log('Run something else');
        done();
    });
});

আপনি প্যাকেজ README এর সম্পূর্ণ নির্দেশাবলী পড়তে পারেন - এটি একই সাথে কিছু কার্যের সেট চালানোও সমর্থন করে।

দয়া করে মনে রাখবেন, এটি আগুনের পরবর্তী বড় রিলিজের ক্ষেত্রে কার্যকরভাবে সংশোধন করা হবে , কারণ তারা স্বয়ংক্রিয়ভাবে নির্ভরতা ক্রমটি সম্পূর্ণরূপে অপসারণ করছে এবং run-sequenceআপনাকে কীভাবে রান অর্ডার ম্যানুয়ালি নির্দিষ্ট করতে দেয় তার অনুরূপ সরঞ্জাম সরবরাহ করে ।

তবে এটি একটি বড় ব্রেকিং পরিবর্তন, সুতরাং আপনি run-sequenceআজ কখন এটি ব্যবহার করতে পারবেন তার অপেক্ষা করার কোনও কারণ নেই।


2
প্লাগইনটির জন্য ওভারজিউলিওস ধন্যবাদ! বিটিডব্লিউ, gulp-cleanপ্লাগইনটি স্ট্রিম 2 বাস্তবায়ন করছে না, সুতরাং এটি নির্ভরতা হিসাবে চালিত হওয়ার সমস্যা ছিল। এটি প্রকাশের সংস্করণ ০.০.০ হিসাবে ঠিক করা হয়েছে, আমার সহকর্মী এটিকে রূপান্তর করার জন্য একটি PR জমা দিয়েছে।
জ্ঞানসিল্যা

3
@ ইনডোলারিং অন্তর্নির্মিত টাস্ক নির্ভরতা কার্যকারিতা এই দৃশ্যের সমাধান করে না । নির্ভরশীল টাস্কগুলি সর্বদা চালিত হয়: বেশ কয়েকটি সময় একসাথে দুটি কাজ চালানোর মতো কোনও বিল্ড তৈরি হয় নি, তবে প্রতিবার নয় । run-sequenceঝাঁকুনি মধ্যে অনুপস্থিত কার্যকারিতা একটি জটিল টুকরা সমাধান করে।
অতিউৎসাহী

2
এছাড়াও, কার্য নির্ভরতা সম্পূর্ণ সমাধান নয়। বলুন আমার কাছে দুটি গুল্প কাজ রয়েছে যা ডাটাবেস ব্যবহার করে স্বতন্ত্রভাবে পরীক্ষা চালায়। উভয়ই অন্যটির উপর নির্ভরশীল নয়, তবে আমি তাদের উভয়টি একই সময়ে চলতে চাই না কারণ তাদের উভয়কেই ডেটাবেস ব্যবহার করা দরকার।
পিটারজওয়েস্ট

3
আশ্চর্যজনক মডিউল - এটি কেন প্রয়োজন তার একটি দুর্দান্ত ব্যাখ্যা - blog.mdnbar.com/gulp-for-smple-build- প্রসেসি - এটি গ্রহণযোগ্য উত্তর হওয়া উচিত
danday74

5
আমি এর জন্য কৃতজ্ঞ যে আপনি এর জন্য একটি সমাধান করেছেন, তবে এটি অনুমানযোগ্য যে ক্রমবর্ধমান ক্রিয়াকলাপ পেতে আমাদের অতিরিক্ত সরঞ্জামের প্রয়োজন। সিক্যুয়ালি এক্সিকিউশন হ'ল ডিফল্ট হওয়া উচিত, বা কমপক্ষে চোদা সহজ fucking 40 বছর ধরে মেকফাইলগুলি ক্রমানুসারে কার্যকর হয়েছে। জেএস বাস্তুতন্ত্র আমাকে অসুস্থ করে তোলে। নোড_মডিউলগুলির me৩ মেগাবাইট কেবল কোনও বৈশিষ্ট্য ছাড়াই একটি বয়লারপ্লেট প্রকল্পটি সংকলন করতে, এবং এটি এখনও ক্রমিক ক্রিয়াকলাপের সক্ষমতা অন্তর্ভুক্ত করে না। অপারেটিং সিস্টেমগুলি একটি ছোট জায়গায় ফিট করে এবং তাদের কার্নেল এবং ড্রাইভার এফএফএস রয়েছে।
junas.fi

371

এই সমস্যার একমাত্র ভাল সমাধান গুল্প ডকুমেন্টেশনে পাওয়া যাবে যা এখানে পাওয়া যাবে

var gulp = require('gulp');

// takes in a callback so the engine knows when it'll be done
gulp.task('one', function(cb) {
  // do stuff -- async or otherwise
  cb(err); // if err is not null and not undefined, the orchestration will stop, and 'two' will not run
});

// identifies a dependent task must be complete before this one begins
gulp.task('two', ['one'], function() {
  // task 'one' is done now
});

gulp.task('default', ['one', 'two']);
// alternatively: gulp.task('default', ['two']);

6
কোনও কারণে আমি ReferenceError: err is not definedকোনও gulp-compassকাজে এটি চালানোর চেষ্টা করছি , আমি কি কিছু মিস করছি?
ওয়াফল

11
@ ওয়াফল এই উদাহরণটি একটি কলব্যাক ব্যবহার করে, যা এটি করার একমাত্র উপায় নয়। ডক্স অনুসারে , আপনি "এমন কোনও প্রতিশ্রুতি বা স্ট্রিমও ফিরিয়ে দিতে পারেন যা ইঞ্জিনটি যথাক্রমে সমাধানের জন্য বা শেষ হওয়ার জন্য অপেক্ষা করা উচিত" " সুতরাং আপনি যদি কোনও টাস্কে কোনও স্রোত ফিরে পান, উদাহরণস্বরূপ return gulp.src('app/**/*.js').pipe(concat(app.js)).pipe(gulp.dest('app/scripts');, টাস্ক দুটিকে সংজ্ঞায়িত করার সময় কীটি হ'ল কার্যটি নির্ভর করে হিসাবে চিহ্নিত করা: gulp.task('two', ['one'], function() {... টাস্ক টু এখন চালনার আগে টাস্ক একটির শেষের জন্য অপেক্ষা করবে।
esvendsen

24
এটি 'এক' এবং 'দুই' এর মধ্যে একটি সংঘবদ্ধ মিলন তৈরি করে। আপনি যদি 'এক' না চালিয়ে 'দুটি' চালাতে চান তবে কী
উইলক

5
আপনি নির্ভরতা ছাড়া একটি নতুন কাজ সংজ্ঞায়িত?
ম্যাথিউ বর্ডার 21

8
ধারাবাহিকভাবে চালনার জন্য দুটি কার্যের প্রয়োজন একটি সংকোর্ণ সংযোগকে বোঝায়।
রিঙ্গো

56

আমি জেনারেটর-গাল্প-ওয়েব অ্যাপ ইওমেন জেনারেটর ব্যবহার করে একটি নোড / গাল্প অ্যাপ তৈরি করেছি । এটি "ক্লিন কনড্রাম" এইভাবে পরিচালনা করেছে (প্রশ্নটিতে উল্লিখিত মূল কার্যগুলিতে অনুবাদ করা):

gulp.task('develop', ['clean'], function () {
  gulp.start('coffee');
});

2
এটি আমার সঠিক (এবং খুব সাধারণ) প্রয়োজন ছিল। এটি সেই দৃশ্যে সম্বোধন করে যেখানে আমাকে সেই কাজগুলিতে নির্ভরতা হিসাবে পরিষ্কার না করে নির্ভরতা তৈরির পূর্ববর্তী নির্ভরতা হিসাবে পরিষ্কারের মতো কিছু করতে হবে। পিএস: gulp.start সম্পর্কে তথ্য () বিট
ক্যাভেট

এটা বোধগম্য; মূল টাস্ক (এবং এটি নির্ভরশীল কাজ) শেষ হওয়ার পরে একটি কলব্যাক। ধন্যবাদ।
মার্কা

4
কেউ যদি কেন এই বিষয়ে কোনও অফিসিয়াল ডকুমেন্টেশন না থাকার বিষয়ে ভাবছেন তবে gulp.start()গুল্প সদস্যের এই উত্তর ব্যাখ্যা করে যে: gulp.start is undocumented on purpose because it can lead to complicated build files and we don't want people using it(উত্স: github.com/gulpjs/gulp/issues/426#issuecomment-41208007 )
থাইবিজি

1
এই ক্ষেত্রে, আমি কীভাবে সেই coffeeকাজটি শেষ করে সনাক্ত করতে পারি ? যদি আমি এটি সনাক্ত না করি তবে এর developআগে coffee
টাস্কটি

ইতিমধ্যে থেকে উত্তর পেয়েছিলাম run-sequenceসোর্স কোড: gulp.on('task_stop')। : বিস্তারিত জানার জন্য আমার বর্ধিত উত্তর দেখার stackoverflow.com/a/38818657/3027390
thybzi

32

রান-সিকোয়েন্সটি সর্বাধিক স্পষ্ট উপায় (কমপক্ষে গুলপ ৪.০ প্রকাশিত হওয়া অবধি)

রান-সিক্যুয়েন্স সহ আপনার টাস্কটি দেখতে এইরকম হবে:

var sequence = require('run-sequence');
/* ... */
gulp.task('develop', function (done) {
    sequence('clean', 'coffee', done);
});

তবে আপনি যদি (কোনও কারণে) এটি ব্যবহার না করা পছন্দ করেন তবে gulp.startপদ্ধতিটি সহায়তা করবে :

gulp.task('develop', ['clean'], function (done) {
    gulp.on('task_stop', function (event) {
        if (event.task === 'coffee') {
            done();
        }
    });
    gulp.start('coffee');
});

দ্রষ্টব্য: আপনি যদি ফলাফল না শুনে কেবল কাজ শুরু করেন তবে টাস্কটি এর developআগে শেষ হবে coffeeএবং এটি বিভ্রান্তিকর হতে পারে।

প্রয়োজন না হলে আপনি ইভেন্ট শ্রোতাদেরও সরিয়ে ফেলতে পারেন

gulp.task('develop', ['clean'], function (done) {
    function onFinish(event) {
        if (event.task === 'coffee') {
            gulp.removeListener('task_stop', onFinish);
            done();
        }
    }
    gulp.on('task_stop', onFinish);
    gulp.start('coffee');
});

বিবেচনা করুন রয়েছে task_errঘটনা আপনি শুনতে পারেন। task_stopসফল সমাপ্তিতে ট্রিগার করা হয়, যখন task_errকিছু ত্রুটি থাকে তখন উপস্থিত হয়।

আপনিও ভাবতে পারেন যে কেন এর জন্য কোনও অফিসিয়াল ডকুমেন্টেশন নেই gulp.start()। গুল্প সদস্যের এই উত্তরটি বিষয়গুলি ব্যাখ্যা করে:

gulp.start উদ্দেশ্যতে অচিহ্নিত হয় কারণ এটি জটিল বিল্ড ফাইলগুলির দিকে পরিচালিত করতে পারে এবং আমরা লোকেরা এটি ব্যবহার করতে চাই না

(উত্স: https://github.com/gulpjs/gulp/issues/426#issuecomment-41208007 )


এই লোকের কাছে দুটি কফি! শ্রোতা অপসারণ সঙ্গে সমাধান ঠিক নিখুঁতভাবে কাজ করে!
daniel.bavrin

এটি সত্যিই উত্তর, বা ন্যায়সঙ্গত, "গল্প 4"। রান ক্রম দৃ is় হয়।
এলএডামস 87

26

গুলপ ডক্স অনুসারে:

নির্ভরতা শেষ হওয়ার আগে আপনার কাজগুলি কি চলছে? আপনার নির্ভরশীলতা কার্যগুলি সঠিকভাবে async চালানোর ইঙ্গিতগুলি ব্যবহার করছে তা নিশ্চিত করুন: কলব্যাক নিন বা কোনও প্রতিশ্রুতি বা ইভেন্ট স্ট্রিম ফিরিয়ে দিন।

আপনার ক্রমের ক্রমটি সিঙ্ক্রোনালি চালাতে:

  1. স্ট্রিমটি কখন শেষ হবে তার কাজটি জানাতে ইভেন্টের স্ট্রিমটি (যেমন gulp.src) ফেরত দিন gulp.task
  2. এর দ্বিতীয় যুক্তিতে কার্য নির্ভরতা ঘোষণা করুন gulp.task

সংশোধিত কোড দেখুন:

gulp.task "coffee", ->
    return gulp.src("src/server/**/*.coffee")
        .pipe(coffee {bare: true}).on("error",gutil.log)
        .pipe(gulp.dest "bin")

gulp.task "clean", ['coffee'], ->
      return gulp.src("bin", {read:false})
        .pipe clean
            force:true

gulp.task 'develop',['clean','coffee'], ->
    console.log "run something else"

4
এটি সঠিক উত্তর হওয়া উচিত! রিটার্নিংয়ের কাজটি কৌতুক করলেন! ধন্যবাদ মানুষ.
Dzoukr

10

আমার ঠিক একই সমস্যা ছিল এবং সমাধানটি আমার পক্ষে বেশ সহজ হয়ে গেল। মূলত আপনার কোডটি নিম্নলিখিতটিতে পরিবর্তন করুন এবং এটি কাজ করা উচিত। দ্রষ্টব্য: gulp.src এর আগে ফিরে আসা আমার জন্য সমস্ত পার্থক্য করেছিল।

gulp.task "coffee", ->
    return gulp.src("src/server/**/*.coffee")
        .pipe(coffee {bare: true}).on("error",gutil.log)
        .pipe(gulp.dest "bin")

gulp.task "clean",->
    return gulp.src("bin", {read:false})
        .pipe clean
            force:true

gulp.task 'develop',['clean','coffee'], ->
    console.log "run something else"

ফিরতি নোটের জন্য ধন্যবাদ! বাদাম কেন গুঁড়িটি সিআরসি-আইএন-এর কাজগুলি ক্রমবিন্যস্ত ছিল তা জানার চেষ্টা করছে।
অ্যান্ড্রু এফ

কাজের মধ্যে সংযুক্ত সংযোগ এড়াতে এটি সঠিক উত্তর হওয়া উচিত। ভাল কাজ করে. ৪.৪-তে উপলব্ধ gulp.series সম্ভবত সেরা উত্তর, তবে আজ অবধি 4.0 পাওয়া যায় না।
উইলক

গুল্প ডেভেলপ ক্লিন বা কফি প্রথমে চলবে
স্কেপ 5'17

8

প্রস্তাবিত সমস্ত সমাধান চেষ্টা করেছেন, সবার মনে হচ্ছে তাদের নিজস্ব সমস্যা আছে।

আপনি যদি অর্কেস্টেটর উত্সটি দেখে থাকেন, বিশেষত .start()বাস্তবায়ন আপনি দেখতে পাবেন যে শেষ পরামিতিটি যদি কোনও ফাংশন হয় তবে এটি এটি কলব্যাক হিসাবে বিবেচনা করবে।

আমি আমার নিজের কাজের জন্য এই স্নিপেট লিখেছি:

  gulp.task( 'task1', () => console.log(a) )
  gulp.task( 'task2', () => console.log(a) )
  gulp.task( 'task3', () => console.log(a) )
  gulp.task( 'task4', () => console.log(a) )
  gulp.task( 'task5', () => console.log(a) )

  function runSequential( tasks ) {
    if( !tasks || tasks.length <= 0 ) return;

    const task = tasks[0];
    gulp.start( task, () => {
        console.log( `${task} finished` );
        runSequential( tasks.slice(1) );
    } );
  }
  gulp.task( "run-all", () => runSequential([ "task1", "task2", "task3", "task4", "task5" ));

4

আমি এই উত্তরটি কিছুক্ষণ অনুসন্ধান করছিলাম। এখন আমি এটি সরকারী গুল্প ডকুমেন্টেশনে পেয়েছি।

শেষটি সম্পন্ন হওয়ার পরে যদি আপনি কোনও গল্প কার্য সম্পাদন করতে চান তবে আপনাকে একটি স্ট্রিম ফিরিয়ে দিতে হবে:

gulp.task('wiredep', ['dev-jade'], function () {
    var stream = gulp.src(paths.output + '*.html')
        .pipe($.wiredep())
        .pipe(gulp.dest(paths.output));

    return stream; // execute next task when this is completed
});

// First will execute and complete wiredep task
gulp.task('prod-jade', ['wiredep'], function() {
    gulp.src(paths.output + '**/*.html')
        .pipe($.minifyHtml())
        .pipe(gulp.dest(paths.output));
});


3

কেবল coffeeনির্ভর করে cleanএবং এর developউপর নির্ভর করে coffee:

gulp.task('coffee', ['clean'], function(){...});
gulp.task('develop', ['coffee'], function(){...});

ডিসপ্যাচ এখন সিরিয়াল হল: cleancoffeedevelop। লক্ষ্য করুন cleanএর বাস্তবায়ন ও coffeeএর বাস্তবায়ন আবশ্যক একটি কলব্যাক গ্রহণ, "তাই ইঞ্জিন জানেনা কবে এটি সম্পন্ন করা হবে" :

gulp.task('clean', function(callback){
  del(['dist/*'], callback);
});

উপসংহারে, নীচে সিঙ্ক্রোনাসের জন্য cleanঅ্যাসিক্রোনাস বিল্ড নির্ভরতা অনুসরণ করে তার জন্য একটি সহজ গাল্প প্যাটার্ন রয়েছে :

//build sub-tasks
gulp.task('bar', ['clean'], function(){...});
gulp.task('foo', ['clean'], function(){...});
gulp.task('baz', ['clean'], function(){...});
...

//main build task
gulp.task('build', ['foo', 'baz', 'bar', ...], function(){...})

গুল্প cleanযথাযথভাবে একবারে চালানোর জন্য যথেষ্ট স্মার্ট build, যতই buildনির্ভর করে না এর কতটা নির্ভরতা নির্ভর করে clean। উপরে লেখা হিসাবে, cleanএকটি সিঙ্ক্রোনাইজেশন বাধা, তারপরে সমস্ত buildনির্ভরতা সমান্তরালভাবে চলে, তারপরে buildচালিত হয়।


3

আমার জন্য এটি কনটেনটেশনের পরে ন্যূনতম কাজটি চালাচ্ছিল না কারণ এটি কনক্রিটেটেড ইনপুটটি প্রত্যাশা করে এবং এটি কিছু সময় উত্পন্ন হয়নি।

আমি কার্যকর করার আদেশে একটি ডিফল্ট টাস্কে যুক্ত করার চেষ্টা করেছি এবং এটি কার্যকর হয়নি worked এটি returnপ্রতিটি কাজের জন্য একটি মাত্র যুক্ত করার পরে এবং gulp.start()নীচের মতো অভ্যন্তরীণ সংশোধন করার পরে কাজ করে।

/**
* Concatenate JavaScripts
*/
gulp.task('concat-js', function(){
    return gulp.src([
        'js/jquery.js',
        'js/jquery-ui.js',
        'js/bootstrap.js',
        'js/jquery.onepage-scroll.js',
        'js/script.js'])
    .pipe(maps.init())
    .pipe(concat('ux.js'))
    .pipe(maps.write('./'))
    .pipe(gulp.dest('dist/js'));
});

/**
* Minify JavaScript
*/
gulp.task('minify-js', function(){
    return gulp.src('dist/js/ux.js')
    .pipe(uglify())
    .pipe(rename('ux.min.js'))
    .pipe(gulp.dest('dist/js'));
});

gulp.task('concat', ['concat-js'], function(){
   gulp.start('minify-js');
});

gulp.task('default',['concat']); 

উত্স http://schickling.me/synchronous-tasks-gulp/


2

গুল্প এবং নোড প্রতিশ্রুতি ব্যবহার করে ।

সুতরাং আপনি এটি করতে পারেন:

// ... require gulp, del, etc

function cleanTask() {
  return del('./dist/');
}

function bundleVendorsTask() {
  return gulp.src([...])
    .pipe(...)
    .pipe(gulp.dest('...'));
}

function bundleAppTask() {
  return gulp.src([...])
    .pipe(...)
    .pipe(gulp.dest('...'));
}

function tarTask() {
  return gulp.src([...])
    .pipe(...)
    .pipe(gulp.dest('...'));
}

gulp.task('deploy', function deployTask() {
  // 1. Run the clean task
  cleanTask().then(function () {
    // 2. Clean is complete. Now run two tasks in parallel
    Promise.all([
      bundleVendorsTask(),
      bundleAppTask()
    ]).then(function () {
      // 3. Two tasks are complete, now run the final task.
      tarTask();
    });
  });
});

যদি আপনি গুল্প স্ট্রিমটি ফিরিয়ে দেন তবে আপনি then()কলব্যাক যোগ করার জন্য পদ্ধতিটি ব্যবহার করতে পারেন । পর্যায়ক্রমে, আপনি Promiseনিজের প্রতিশ্রুতি তৈরি করতে নোডের নেটিভ ব্যবহার করতে পারেন । এখানে আমার Promise.all()কাছে একটি কলব্যাক রয়েছে যা সমস্ত প্রতিশ্রুতি সংশোধন করে fire


-8

এই হ্যাকটি চেষ্টা করুন :-) গুলপ ভি 3.এক্স হ্যাক অ্যাসিঙ্ক বাগের জন্য

আমি রেডিমের "অফিসিয়াল" সমস্ত উপায়ে চেষ্টা করেছিলাম, তারা আমার পক্ষে কাজ করেনি তবে এটি করেনি। আপনি ঝাঁকুনি 4.x এও আপগ্রেড করতে পারেন তবে আমি আপনাকে সুপারিশ করছি যে আপনি এটি করবেন না, এটি এতগুলি জিনিস ভেঙে দেয়। আপনি একটি বাস্তব জেএস প্রতিশ্রুতি ব্যবহার করতে পারেন, কিন্তু ওহে, এটি দ্রুত, নোংরা, সহজ :-) মূলত আপনি ব্যবহার:

var wait = 0; // flag to signal thread that task is done
if(wait == 0) setTimeout(... // sleep and let nodejs schedule other threads

পোস্ট দেখুন!


সমস্যা সমাধানের আরও ভাল উপায় আছে, সেটটাইমআউট ব্যবহার করে বরাদ্দ দেওয়া হয় না। কোনও কাজ শেষ হতে কত সময় লাগবে তা আপনি ঠিক বুঝতে পারেন নি।
রেজিনাল্ডো কামারগো রিবেইরো

আপনার কোনও কোড পিএফএফ লেখার আগে আপনার সত্যিই চিন্তা করা উচিত
DDD
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.