2016-01-21 87 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'))); 

和它的作品! :)