2016-01-21 64 views
2

我使用gulp工作流程,一切正常,但它似乎只能在最上面的文件上工作,例如:public/index.html,但如果我想使用public/products/item.htmlgulp-data会抛出错误,并寻找src/json/item.json而不是src/json/products/item.json使用gulp-data和gulp-jade与目录

我觉得有什么不对,因为我用path.basename(file.path, '.jade') + '.json'),它只会返回文件名,当然,如果是的话,如何使它也提供目录,如果它抛出类似products/item.jade

var basePath = { 
    src: 'src/', 
    dest: 'public/' 
} 

var src = { 
    pages: basePath.src + 'jade/', 
    json : basePath.src + 'json' 
} 

gulp.task('make:pages', function() { 
    return gulp.src(src.pages + '**/!(_)*.jade') 
     .pipe(plumber({ 
      errorHandler: onError 
     })) 
     .pipe(data(function(file) { 
      return JSON.parse(fs.readFileSync('src/json/' + path.basename(file.path, '.jade') + '.json')); 
     })) 
     .pipe(jade({ 
      pretty: true 
     })) 
     .pipe(gulp.dest(basePath.dest)); 
}); 

回答

0

提供了我使用的是相同的文件夹结构:

src 
├── fonts 
├── jade 
│   ├── _layout.jade 
│   ├── index.jade 
│   ├── product 
│   │   └── item.jade 
│   ├── partials 
│   │   ├── _footer.jade 
│   │   └── _header.jade 
├── js 
├── json 
│   ├── index.json 
│   ├── product 
│   │   └── item.json 

我用这个来代替:

return JSON.parse(fs.readFileSync(file.path.replace(/jade/g, 'json'))); 

和它的作品! :)