Ne zaman bir şeyi yudumlaysam, bir iddia hatası alıyorum. - Görev işlevi belirtilmelidir


102

Aşağıdaki komutu çalıştırmaya çalışıyorum ama maalesef hatalarla karşılaşıyorum.

$ gulp build

Terminalimde ve bu iddia hatasını alıyorum. Düğümü ve NPM'yi kaldırdım ve brew kullanarak yeniden yükledim - Bu adımlarla Node.js'yi tamamen nasıl kaldırırım ve baştan (Mac OS X) yeniden yüklerim . Düğüm sürümüm v10.5.0 ve npm sürümü 6.1.0.

Sistemim MacOS High Sierra 10.13.2

assert.js:269
    throw err;
    ^

AssertionError [ERR_ASSERTION]: Task function must be specified
    at Gulp.set [as _setTask] (bulkit/startup-kit/node_modules/undertaker/lib/set-task.js:10:3)
    at Gulp.task (startup-kit/node_modules/undertaker/lib/task.js:13:8)
    at Object.<anonymous> 
    at Module._compile (internal/modules/cjs/loader.js:702:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
    at Module.load (internal/modules/cjs/loader.js:612:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
    at Function.Module._load (internal/modules/cjs/loader.js:543:3)
    at Module.require (internal/modules/cjs/loader.js:650:17)
    at require (internal/modules/cjs/helpers.js:20:18)

package.json

{
    "name": "bulkit-startup",
    "version": "0.0.1",
    "description": "Bulkit Startup Kit",
    "main": "Gruntfile.js",
    "devDependencies": {
        "autoprefixer": "^6.3.6",
        "browser-sync": "^2.24.5",
        "gulp": "^4.0.0",
        "gulp-clean": "^0.3.2",
        "gulp-concat": "^2.6.0",
        "gulp-postcss": "^6.1.0",
        "gulp-sass": "^2.2.0",
        "gulp-sourcemaps": "^1.6.0",
        "jquery": "^3.3.1",
        "mq4-hover-shim": "^0.3.0",
        "panini": "^1.3.0",
        "rimraf": "^2.5.2"
    },
    "engines": {
        "node": ">=0.10.1"
    },
    "scripts": {
        "start": "gulp",
        "build": "gulp build"
    },
    "repository": {
        "type": "git",
        "url": "https://github.com/cssninjaStudio/bulkit.git"
    },
    "bugs": {
        "url": "https://github.com/cssninjaStudio/bulkit/issues",
        "email": "support@cssninja.io"
    },
    "author": "Css Ninja <hello@cssninja.io> (https://cssninja.io/themes/bulkit)",
    "license": "Commercial",
    "private": true,
    "dependencies": {
        "bulma": "^0.7.0",
        "del": "^3.0.0",
        "jquery-waypoints": "^2.0.5",
        "jquery.counterup": "^2.1.0",
        "scrollreveal": "^3.4.0",
        "slick-carousel": "^1.8.1",
        "wallop": "^2.4.1"
    }
}

gulpfile.js

var gulp = require('gulp');
var clean = require('gulp-clean');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer');
var mq4HoverShim = require('mq4-hover-shim');
var rimraf = require('rimraf').sync;
var browser = require('browser-sync');
var panini = require('panini');
var concat = require('gulp-concat');
var port = process.env.SERVER_PORT || 8080;
var nodepath =  'node_modules/';
var assetspath =  'assets/';

// Starts a BrowerSync instance
gulp.task('server', ['build'], function(){
    browser.init({server: './_site', port: port});
});

// Watch files for changes
gulp.task('watch', function() {
    gulp.watch('scss/**/*', ['compile-scss', browser.reload]);
    gulp.watch('sass/**/*', ['compile-sass', browser.reload]);
    gulp.watch('js/**/*', ['copy-js', browser.reload]);
    gulp.watch('images/**/*', ['copy-images', browser.reload]);
    gulp.watch('html/pages/**/*', ['compile-html']);
    gulp.watch(['html/{layouts,includes,helpers,data}/**/*'], ['compile-html:reset','compile-html']);
    gulp.watch(['./src/{layouts,partials,helpers,data}/**/*'], [panini.refresh]);
});

// Erases the dist folder
gulp.task('reset', function() {
    rimraf('bulma/*');
    rimraf('scss/*');
    rimraf('assets/css/*');
    rimraf('assets/fonts/*');
    rimraf('images/*');
});

// Erases the dist folder
gulp.task('clean', function() {
    rimraf('_site');
});

// Copy Bulma filed into Bulma development folder
gulp.task('setupBulma', function() {
    //Get Bulma from node modules
    gulp.src([nodepath + 'bulma/*.sass']).pipe(gulp.dest('bulma/'));
    gulp.src([nodepath + 'bulma/**/*.sass']).pipe(gulp.dest('bulma/'));
});

// Copy static assets
gulp.task('copy', function() {
    //Copy other external font and data assets
    gulp.src(['assets/fonts/**/*']).pipe(gulp.dest('_site/assets/fonts/'));
    gulp.src([nodepath + 'slick-carousel/slick/fonts/**/*']).pipe(gulp.dest('_site/assets/css/fonts/'));
    gulp.src([nodepath + 'slick-carousel/slick/ajax-loader.gif']).pipe(gulp.dest('_site/assets/css/'));
});

//Theme Sass variables
var sassOptions = {
    errLogToConsole: true,
    outputStyle: 'compressed',
    includePaths: [nodepath + 'bulma/sass']
};

//Theme Scss variables
var scssOptions = {
    errLogToConsole: true,
    outputStyle: 'compressed',
    includePaths: ['./scss/partials']
};

// Compile Bulma Sass
gulp.task('compile-sass', function () {
    var processors = [
        mq4HoverShim.postprocessorFor({ hoverSelectorPrefix: '.is-true-hover ' }),
        autoprefixer({
            browsers: [
                "Chrome >= 45",
                "Firefox ESR",
                "Edge >= 12",
                "Explorer >= 10",
                "iOS >= 9",
                "Safari >= 9",
                "Android >= 4.4",
                "Opera >= 30"
            ]
        })//,
        //cssnano(),
    ];
    //Watch me get Sassy
    return gulp.src('./bulma/bulma.sass')
        .pipe(sourcemaps.init())
        .pipe(sass(sassOptions).on('error', sass.logError))
        .pipe(postcss(processors))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest('./_site/assets/css/'));
});

// Compile Theme Scss
gulp.task('compile-scss', function () {
    var processors = [
        mq4HoverShim.postprocessorFor({ hoverSelectorPrefix: '.is-true-hover ' }),
        autoprefixer({
            browsers: [
                "Chrome >= 45",
                "Firefox ESR",
                "Edge >= 12",
                "Explorer >= 10",
                "iOS >= 9",
                "Safari >= 9",
                "Android >= 4.4",
                "Opera >= 30"
            ]
        })//,
        //cssnano(),
    ];
    //Watch me get Sassy
    return gulp.src('./scss/core.scss')
        .pipe(sourcemaps.init())
        .pipe(sass(sassOptions).on('error', sass.logError))
        .pipe(postcss(processors))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest('./_site/assets/css/'));
});

// Compile Html
gulp.task('compile-html', function() {
    gulp.src('html/pages/**/*.html')
        .pipe(panini({
        root: 'html/pages/',
        layouts: 'html/layouts/',
        partials: 'html/includes/',
        helpers: 'html/helpers/',
        data: 'html/data/'
    }))
        .pipe(gulp.dest('_site'))
        .on('finish', browser.reload);
});

gulp.task('compile-html:reset', function(done) {
    panini.refresh();
    done();
});

// Compile css from node modules
gulp.task('compile-css', function() {
    return gulp.src([ 
        nodepath + 'slick-carousel/slick/slick.css',
        nodepath + 'slick-carousel/slick/slick-theme.css',
        nodepath + 'wallop/css/wallop.css',
        //Additional static css assets
        assetspath + 'css/icons.min.css',
    ])
        .pipe(concat('app.css'))
        .pipe(gulp.dest('./_site/assets/css/'));
});

// Compile js from node modules
gulp.task('compile-js', function() {
    return gulp.src([ 
        nodepath + 'jquery/dist/jquery.min.js', 
        nodepath + 'slick-carousel/slick/slick.min.js', 
        nodepath + 'scrollreveal/dist/scrollreveal.min.js',
        nodepath + 'waypoints/lib/jquery.waypoints.min.js',
        nodepath + 'waypoints/lib/shortcuts/sticky.min.js',
        nodepath + 'jquery.counterup/jquery.counterup.min.js',
        nodepath + 'wallop/js/Wallop.min.js',
        //Additional static js assets
        assetspath + 'js/ggpopover/ggpopover.min.js',
        assetspath + 'js/ggpopover/ggtooltip.js',
        assetspath + 'js/embed/embed.js',
        assetspath + 'js/gmap/gmap.min.js',
    ])
        .pipe(concat('app.js'))
        .pipe(gulp.dest('./_site/assets/js/'));
});

//Copy Theme js to production site
gulp.task('copy-js', function() {
    gulp.src('js/**/*.js')
        .pipe(gulp.dest('./_site/assets/js/'));
});

//Copy images to production site
gulp.task('copy-images', function() {
    gulp.src('images/**/*')
        .pipe(gulp.dest('./_site/assets/images/'));
});

gulp.task('init', ['setupBulma']);
gulp.task('build', ['clean','copy', 'compile-js', 'compile-css', 'copy-js', 'compile-sass', 'compile-scss', 'compile-html', 'copy-images']);
gulp.task('default', ['server', 'watch']);

Yanıtlar:


168

Gulp 4.0, görevin yürütülecek başka bir göreve bağlı olması durumunda görevlerin tanımlanma şeklini değiştirdi. Liste parametresi kullanımdan kaldırıldı.

Gulpfile.js dosyanızdan bir örnek şöyle olacaktır:

// Starts a BrowerSync instance
gulp.task('server', ['build'], function(){
  browser.init({server: './_site', port: port});
});

Liste parametresi yerine gulp.series()ve gulp.parallel().

Bu görev şu şekilde değiştirilmelidir:

// Starts a BrowerSync instance
gulp.task('server', gulp.series('build', function(){
  browser.init({server: './_site', port: port});
}));

Ben bu konuda uzman değilim. Görevleri seri olarak yürütmek için gulp belgelerinde daha sağlam bir örnek veya Jhey Thompkins ve Stefan Baumgartner'ın mükemmel blog gönderilerini takip ederek daha sağlam bir örnek görebilirsiniz.

https://codeburst.io/switching-to-gulp-4-0-271ae63530c0

https://fettblog.eu/gulp-4-parallel-and-series/


2
Bu, Task must be specifiedolan hatamı olarak değiştiriyor Task never defined.
2540625

@ 2540625 Umarım bunu sonunda sıralandırmışsınızdır, ancak gulp.task tanımını aşağıda belirtilen görevlerin tanımlandığı dizi () / parallel () çağrılarıyla taşıyana kadar aynı sorunu yaşadım . Bir işlevi tanımlanmadan önce kullanmaya çalışmanın klasik bir javascript hatası gibi görünüyordu.
Jon

51

Son gulpfile.js satırınızı değiştirmeyi deneyin

gulp.task('default', ['server', 'watch']);

ile

gulp.task('default', gulp.series('server', 'watch'));

1
kısa ve kullanışlı :)
ehsan

22

Package.json dosyasındaki gulp sürümünüzü 3.9.1-'ye indirin

"gulp": "^3.9.1",

6
Düğüm v10'daysanız bunu yapmayın.
bbsimonbb

1
@bbsimonbb bunu detaylandırır mısın lütfen?
Henri

2
@Henri Sürüm 4 görevlerin çalışma şeklini değiştirdi, bu nedenle mevcut kodunun çalışması için gulp 3.9.1'i çalıştırması gerekiyor. Ancak daha iyi cevap, kodunu
gulp

14

Yudum 4'ten yudumunuzu düşürmenize gerek yok . Birden çok görevi birleştirmek için gulp.series () kullanın. İlk başta gulp'u global olarak kurun

npm install --global gulp-cli

ve ardından çalışma dizininize yerel olarak kurun.

npm install --save-dev gulp

ayrıntılara buradan bakın

Misal:

package.json

{
  "name": "gulp-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "browser-sync": "^2.26.3",
    "gulp": "^4.0.0",
    "gulp-sass": "^4.0.2"
  },
  "dependencies": {
    "bootstrap": "^4.3.1",
    "jquery": "^3.3.1",
    "popper.js": "^1.14.7"
  }
}

gulpfile.js

var gulp = require("gulp");
var sass = require('gulp-sass');
var browserSync = require('browser-sync').create();

// Specific Task
function js() {
    return gulp
    .src(['node_modules/bootstrap/dist/js/bootstrap.min.js', 'node_modules/jquery/dist/jquery.min.js', 'node_modules/popper.js/dist/umd/popper.min.js'])
    .pipe(gulp.dest('src/js'))
    .pipe(browserSync.stream());
}
gulp.task(js);

// Specific Task
function gulpSass() {
    return gulp
    .src(['src/scss/*.scss'])
    .pipe(sass())
    .pipe(gulp.dest('src/css'))
    .pipe(browserSync.stream());
}
gulp.task(gulpSass);

// Run multiple tasks
gulp.task('start', gulp.series(js, gulpSass));

Run gulp startbirden fazla görev ve çalıştırmak yangın gulp jsveya gulp gulpSassbelirli bir görev için.


1
Bu yeterince yakındı. Sözdizimini doğru almak ve dışa aktarım eklemek için Gulp web sitesini kontrol etmem gerekiyordu.
Luke Puplett


6

Gulp kullanırken de aynı hatayı alıyorum. Çözüm, hem yerel sürüm hem de CLI sürümü için Gulp 3.9.1 sürümüne geçmektir.

sudo npm install -g gulp@3.9.1

Proje klasöründe çalıştırın

npm install gulp@3.9.1

3

Hataları düzeltmek için gulp & npm sürümlerini değiştirmeye devam etmek iyi değildir. Çalışan makinemi yeniden yükledikten sonra geçen günlerde birkaç istisna alıyordum. Ve bunları yeniden yüklemek ve düzeltmek için tonlarca dakika boşa harcandı.

Bu yüzden, hepsini en son sürümlere yükseltmeye karar verdim:

npm -v : v12.13.0 
node -v : 6.13.0
gulp -v : CLI version: 2.2.0 Local version: 4.0.2

Bu hata, size gulpfile'da kodlama biçiminden kaynaklanıyor, ancak sürüm uyuşmazlığı değil. Öyleyse, Gulp dosyasında 2 şeyi Gulp sürüm 4 ile uyumlu hale getirmek için değiştirmeniz gerekiyor. Gulp 4, görevi başlatma şeklini Sürüm 3'e göre değiştirdi.

  1. Sürüm 4'te, görevi dize adıyla bir yudum görevi olarak çağırmadan önce, görevi bir işlev olarak tanımlamanız gerekir. V3'te:

gulp.task ('hizmet', ['sass'], işlev () {..});

Ancak V4'te şöyle olmalıdır:

function serve() {
...
}
gulp.task('serve', gulp.series(sass));
  1. @Arthur'un da bahsettiği gibi, argümanların görev işlevine aktarılma şeklini değiştirmeniz gerekir. V3'te şöyle:

gulp.task ('hizmet', ['sass'], işlev () {...});

Ancak V4'te şöyle olmalıdır:

gulp.task('serve', gulp.series(sass));

1

Sorun şu ki, gulp 4 kullanıyorsunuz ve gulfile.js'deki sözdizimi yutkunma 3'tür. Yani ya yudumunuzu 3.xx'e indirin ya da gulp 4 sözdizimlerinden yararlanın.

Sözdizimi Gulp 3:

gulp.task('default', ['sass'], function() {....} );

Sözdizimi Gulp 4:

gulp.task('default', gulp.series(sass), function() {....} );

Yudum ve yudum görevleri hakkında daha fazla bilgiyi şu adresten okuyabilirsiniz: https://medium.com/@sudoanushil/how-to-write-gulp-tasks-ce1b1b7a7e81


-4

Adımlar:

  1. "yudum": "^ 3.9.1",
  2. npm yükleme
  3. yudum stilleri
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.