গুল্প ত্রুটি: ঘড়ির কাজটি একটি ফাংশন হতে হবে


125

এই আমার gulpfile:

// Modules & Plugins
var gulp = require('gulp');
var concat = require('gulp-concat');
var myth = require('gulp-myth');
var uglify = require('gulp-uglify');
var jshint = require('gulp-jshint');
var imagemin = require('gulp-imagemin');

// Styles Task
gulp.task('styles', function() {
    return gulp.src('app/css/*.css')
        .pipe(concat('all.css'))
        .pipe(myth())
        .pipe(gulp.dest('dist'));
});

// Scripts Task
gulp.task('scripts', function() {
    return gulp.src('app/js/*.js')
        .pipe(jshint())
        .pipe(jshint.reporter('default'))
        .pipe(concat('all.js'))
        .pipe(uglify())
        .pipe(gulp.dest('dist'));
});

// Images Task
gulp.task('images', function() {
    return gulp.src('app/img/*')
        .pipe(imagemin())
        .pipe(gulp.dest('dist/img'));
});

// Watch Task
gulp.task('watch', function() {
    gulp.watch('app/css/*.css', 'styles');
    gulp.watch('app/js/*.js', 'scripts');
    gulp.watch('app/img/*', 'images');
});

// Default Task
gulp.task('default', gulp.parallel('styles', 'scripts', 'images', 'watch'));

আমি যদি চালনা করি images, scriptsবা cssএকাকী এটি কাজ করে works আমাকে returnকাজগুলিতে যুক্ত করতে হয়েছিল - এটি বইতে ছিল না তবে গুগলিং আমাকে দেখিয়েছিল এটি প্রয়োজনীয় ছিল was

আমার সমস্যাটি হ'ল defaultকার্যটি ত্রুটিযুক্ত:

[18:41:59] Error: watching app/css/*.css: watch task has to be a function (optionally generated by using gulp.parallel or gulp.series)
    at Gulp.watch (/media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/node_modules/gulp/index.js:28:11)
    at /media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/gulpfile.js:36:10
    at taskWrapper (/media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/node_modules/undertaker/lib/set-task.js:13:15)
    at bound (domain.js:287:14)
    at runBound (domain.js:300:12)
    at asyncRunner (/media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/node_modules/async-done/index.js:36:18)
    at nextTickCallbackWith0Args (node.js:419:9)
    at process._tickCallback (node.js:348:13)
    at Function.Module.runMain (module.js:444:11)
    at startup (node.js:136:18)

আমি মনে করি এটি কারণ কারণ returnঘড়ি টাস্কেও নেই। ত্রুটির বার্তাটি পরিষ্কার নয় - আমার পক্ষে কমপক্ষে। আমি returnশেষের পরে একটি যুক্ত করার চেষ্টা করেছি gulp.watch()কিন্তু এটিও কার্যকর হয়নি।

উত্তর:


352

Gulp 3.x এ আপনি পছন্দ করতে কোনও টাস্কের নামটি কেবল পাস করতে gulp.watch()পারেন:

gulp.task('watch', function() {
  gulp.watch('app/css/*.css', ['styles']);
  gulp.watch('app/js/*.js', ['scripts']);
  gulp.watch('app/img/*', ['images']);
});

গুল্প ৪.x এ আর হয় না। আপনি আছে একটি ফাংশন পাস। গল্প ৪.x এ করার প্রথাগত উপায় হ'ল gulp.series()কেবল একটি কার্য নামের সাথে একটি প্রার্থনা পাস করা । এটি এমন একটি ফাংশন দেয় যা কেবলমাত্র নির্দিষ্ট কার্য সম্পাদন করে:

gulp.task('watch', function() {
  gulp.watch('app/css/*.css', gulp.series('styles'));
  gulp.watch('app/js/*.js', gulp.series('scripts'));
  gulp.watch('app/img/*', gulp.series('images'));
});

13
সুতরাং একটি ফাংশন একটি সিরিজ ... কিছুটা অদ্ভুত তাই না?
MonsieurNinja

ধন্যবাদ ... // gulp.task ('ঘড়ি', ফাংশন () {gulp.watch ('src / চিত্র / *। পিএনজি', gulp.series ('চিত্র')); gulp.watch ('src /js/*.js ', gulp.series (' js ')); gulp.watch (' src / scss / *। scss ', gulp.series (' CSS ')); gulp.watch (' src / html /*.html ', gulp.series (' এইচটিএমএল '));});
ওয়াসিম খান

1
আমি বুঝতে stylesনা পেরে আটকে গেছি gulp.series('styles'));একটি ফাংশন। আমার ক্ষেত্রে, আমি sassএকটি ফাংশন হিসাবে সংজ্ঞায়িত করেছি , তবে আমি যা ছিল সেটি ( )গন্তব্য হিসাবে নিয়েছি । নিম্নলিখিত টিউটোরিয়াল "শিক্ষানবিশদের জন্য Gulp" কেহ জন্য এবং আটকে গিয়েছে, ফিক্স লাইন প্রতিস্থাপন করতে হয় gulp.watch('app/scss/**/*.scss', ['sass']);সঙ্গেgulp.watch('app/sass/**/*.sass', gulp.series('sass'));
YCode

বিটিডব্লিউ gulp.watch('app/sass/**/*.sass', gulp.series('sass'));এবং কী পার্থক্য gulp.watch('app/sass/**/*.sass', gulp.series['sass']);? আমি উভয় লাইন পরীক্ষা করে দেখেছি এবং কোনও পরিবর্তন দেখেনি, তবে আমি নিশ্চিত যে একটি পার্থক্য রয়েছে (যা পরে আমাকে ধিক্কার দেবে)।
ওয়াইকোড

18

সবাইকে ধন্যবাদ

gulp.task('watch', function(){
    gulp.watch('app/sass/**/*.sass', gulp.series('sass'));
});

সংস্করণ gulp 4.xx এর জন্য


এটি হওয়া উচিতgulp.series('sass')
টনি বুই

না, এটির কেবল একটি কাজ হলে এটি সিরিজ হওয়ার দরকার নেই।
ভের্টিলিয়ন

18

নি: শ্বাসে-v4.0

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

বিশদে বিশ্লেষণে আমি কী ভুল করছি

  1. watchআমার এইচটিএমএল ফাইলগুলিতে কিছু পরিবর্তন লক্ষ্য করা গেলে আমি পুনরায় লোড ফাংশনটিতে কল করতে ভুলে গিয়েছিলাম ।
  2. যেহেতু fireUpএবং KeepWatchingঅবরুদ্ধ হয়। সেগুলি সিরিয়াল পরিবর্তে সমান্তরালে শুরু করা দরকার। সুতরাং আমি পরিবর্তনশীল রান মধ্যে সমান্তরাল ফাংশন ব্যবহার।

4

এটি আমার জন্য গুলপ ৪.০ এ কাজ করেছিল

gulp.task('watch', function() {
      gulp.watch('src/images/*.png', gulp.series('images'));
      gulp.watch('src/js/*.js', gulp.series('js'));
      gulp.watch('src/scss/*.scss', gulp.series('css'));
      gulp.watch('src/html/*.html', gulp.series('html'));
});

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