2014-12-05 2 views
1

gulp-jade를 gulp-jade와 함께 사용하려고하지만 GULP-DATA Plugin과 관련된 오류가 발생합니다. 여기 gulp-jade와 gulp-data를 함께 사용하는 멍에

내 gulpfile.js
var gulp = require('gulp'), 
    plumber = require('gulp-plumber'), 
    browserSync = require('browser-sync'), 
    jade = require('gulp-jade'), 
    data = require('gulp-data'), 
    path = require('path'), 
    sass = require('gulp-ruby-sass'), 
    prefix = require('gulp-autoprefixer'), 
    concat = require('gulp-concat'), 
    uglify = require('gulp-uglify'), 
    process = require('child_process'); 

    gulp.task('default', ['browser-sync', 'watch']); 

    // Watch task 
    gulp.task('watch', function() { 
    gulp.watch('*.jade', ['jade']); 
    gulp.watch('public/css/**/*.scss', ['sass']); 
    gulp.watch('public/js/*.js', ['js']); 
    }); 

    var getJsonData = function(file, cb) { 
    var jsonPath = './data/' + path.basename(file.path) + '.json'; 
    cb(require(jsonPath)) 
    }; 

    // Jade task 
    gulp.task('jade', function() { 
    return gulp.src('*.jade') 
    .pipe(plumber()) 
    .pipe(data(getJsonData)) 
    .pipe(jade({ 
     pretty: true 
    })) 
    .pipe(gulp.dest('Build/')) 
    .pipe(browserSync.reload({stream:true})); 
    }); 

    ... 

    // Browser-sync task 
    gulp.task('browser-sync', ['jade', 'sass', 'js'], function() { 
    return browserSync.init(null, { 
    server: { 
     baseDir: 'Build' 
    } 
    }); 
}); 

입니다 그리고 이것은

{ 
    "title": "This is my website" 
} 

내가 오류 index.jade.json 이름, 기본 JSON 파일입니다 :

Error in plugin 'gulp-data' 
[object Object] 

답변

4

getJsonData에서 필요한 데이터를 콜백의 첫 번째 인수로 전달했기 때문에 오류가 발생했습니다. 가능한 오류를 위해 예약되어 있습니다.

귀하의 경우에는 콜백이 필요하지 않습니다. gulp-data usage example 보면이 작동합니다 :

.pipe(data(function(file) { 
    return require('./data/' + path.basename(file.path) + '.json'); 
})) 

전체 예 :

var gulp = require('gulp'); 
var jade = require('gulp-jade'); 
var data = require('gulp-data'); 
var path = require('path'); 
var fs = require('fs'); 

gulp.task('jade', function() { 
    return gulp.src('*.jade') 
    .pipe(data(function(file) { 
     return require('./data/' + path.basename(file.path) + '.json'); 
    })) 
    .pipe(jade({ pretty: true })) 
    .pipe(gulp.dest('build/')); 
}); 

사용이 당신은 gulp.watch에 작업을 실행하는 경우 :

.pipe(data(function(file) { 
    return JSON.parse(fs.readFileSync('./data/' + path.basename(file.path) + '.json')); 
})) 
+0

난 더 이상 오류를받지 못했습니다을 그러나'index.jade'에'p = title'을 입력하면 생성 된 html 파일에 빈'p' 태그 만 생깁니다. 내가 gulp-jade 문서를 확인했는데'geJsonData' 변수를 사용하는 이유는 그들이 [여기] (https://www.npmjs.org/package/gulp-jade#use-with-gulp-data)를 추천하기 때문입니다. -https-www-npmjs-org-package-gulp-data-) – Cos

+0

그건 이상합니다. 그것은 나를 위해 작동합니다. 꿀꺽 꿀꺽 술에있는 예는 구식입니다. – Heikki

+0

터미널에서'gulp' 명령을 실행할 때만 실제로 작동한다는 것을 알았습니다. 태스크 실행시 오브젝트 컨텐츠를 얻고 데이터를 삽입 할 수있는 방법이 있습니까? – Cos

관련 문제