꿀꺽 꿀꺽 꿀꺽 꿀꺽 마실 때마다 어설 션 오류가 발생합니다. -작업 기능을 지정해야합니다.


109

아래 명령을 실행하려고하는데 안타깝게도 오류가 발생합니다.

$ gulp build

내 터미널에서이 어설 션 오류가 발생합니다. 노드NPM을 제거 하고 brew를 사용하여 다시 다시 설치했습니다. Node.js를 완전히 제거 하고이 단계에 따라 처음부터 다시 설치 (Mac OS X)하는 방법은 무엇입니까 ? 내 노드 버전은 v10.5.0이고 npm 버전은 6.1.0.

내 시스템은 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']);

답변:


176

Gulp 4.0은 작업이 실행할 다른 작업에 의존하는 경우 작업을 정의하는 방식을 변경했습니다. 목록 매개 변수는 더 이상 사용되지 않습니다.

gulpfile.js의 예는 다음과 같습니다.

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

그들이 도입 한 목록 매개 변수 대신 gulp.series()gulp.parallel().

이 작업은 다음과 같이 변경해야합니다.

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

나는 이것에 대한 전문가가 아닙니다. 연속 작업 실행에 대한 gulp 문서 에서 더 강력한 예제를 볼 수 있으며 Jhey Thompkins 및 Stefan Baumgartner의 훌륭한 블로그 게시물은 다음과 같습니다.

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

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


3
이것은 내 오류를에서 Task must be specified로 변경 합니다 Task never defined.
2540625

@ 2540625 나는 당신이 결국 이것을 정렬하기를 바라지 만 거기에 명명 된 작업이 정의 된 아래 의 series () / parallel () 호출로 gulp.task의 정의를 이동할 때까지 동일한 문제 가있었습니다. 정의되기 전에 함수를 사용하려고 시도하는 고전적인 자바 스크립트 오류처럼 보였습니다.
Jon

58

gulpfile.js의 마지막 줄을 바꾸십시오.

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

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

1
짧고 : 유용한
에산

21

package.json 파일의 gulp 버전을 3.9.1로 낮추십시오.

"gulp": "^3.9.1",

6
Node v10을 사용하는 경우이 작업을 수행하지 마십시오.
bbsimonbb

1
@bbsimonbb 그것에 대해 자세히 설명해 주시겠습니까?
Henri

2
@Henri 버전 4는 작업 실행 방법을 변경 했으므로 현재 코드가 작동하려면 gulp 3.9.1을 실행해야합니다. 그러나 더 나은 대답은 4+ 꿀꺽와 호환되도록 자신의 코드를 업데이트하는 것입니다
user441058

14

gulp 4 에서 gulp 를 다운 그레이드 할 필요가 없습니다 . gulp.series ()를 사용하여 여러 작업을 결합하십시오. 처음에는 전 세계적으로 gulp를 설치하십시오.

npm install --global gulp-cli

그런 다음 작업 디렉토리에 로컬로 설치하십시오.

npm install --save-dev gulp

여기에서 세부 사항을보십시오

예:

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));

실행 gulp start여러 작업 및 실행 화재 gulp js또는 gulp gulpSass특정 작업을.


1
이것은 충분히 가까웠습니다. Gulp 웹 사이트를 확인하여 구문을 올바르게 얻고 내보내기를 추가해야했습니다.
Luke Puplett 19

11

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

gulp.task(name, deps, func)으로 대체 되었기 때문 gulp.task(name, gulp.{series|parallel}(deps, func))입니다.

최신 버전의 gulp이지만 이전 코드를 사용하고 있습니다 . 코드를 수정하거나 다운 그레이드하십시오.


6

Gulp를 사용할 때 동일한 오류가 발생합니다. 해결책은 로컬 버전과 CLI 버전 모두에서 Gulp 버전 3.9.1로 전환하는 것입니다.

sudo npm install -g gulp@3.9.1

프로젝트의 폴더에서 실행

npm install gulp@3.9.1

3

오류를 수정하기 위해 gulp 및 npm 버전을 계속 변경하는 것은 좋지 않습니다. 작동중인 컴퓨터를 다시 설치 한 후 지난 며칠 동안 몇 가지 예외가 발생했습니다. 그리고 재설치 및 수정에 많은 시간을 낭비했습니다.

그래서 모두 최신 버전으로 업그레이드하기로 결정했습니다.

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

이 오류는 gulpfile에서 코드화되었지만 버전 불일치가 아니기 때문에 발생합니다. 따라서 Gulp 버전 4와 일치하도록 gulpfile의 2 가지 사항을 변경해야합니다. Gulp 4는 버전 3보다 작업 시작 방법을 변경했습니다.

  1. 버전 4에서는 문자열 이름으로 꿀꺽 꿀꺽 작업으로 호출하기 전에 작업을 함수로 정의해야합니다. V3에서 :

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

그러나 V4에서는 다음과 같아야합니다.

function serve() {
...
}
gulp.task('serve', gulp.series(sass));
  1. @Arthur가 언급했듯이 작업 함수에 인수를 전달하는 방법을 변경해야합니다. V3에서는 다음과 같습니다.

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

그러나 V4에서는 다음과 같아야합니다.

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

1

문제는 gulp 4를 사용하고 있고 gulfile.js의 구문은 gulp 3이라는 것입니다. 따라서 gulp를 3.xx로 다운 그레이드하거나 gulp 4 구문을 사용하십시오.

구문 Gulp 3 :

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

구문 Gulp 4 :

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

gulp 및 gulp 작업에 대한 자세한 내용은 https://medium.com/@sudoanushil/how-to-write-gulp-tasks-ce1b1b7a7e81 에서 읽을 수 있습니다.


-4

단계 :

  1. "gulp": "^ 3.9.1",
  2. npm 설치
  3. 꿀꺽 꿀꺽 스타일
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.