我有一个gulp工作流程,一切运行正常,但它似乎只适用于最上面的文件,例如:public/index.html
,但如果我想使用public/products/item.html
, gulp-data 会抛出错误并查找src/json/item.json
而不是src/json/products/item.json
。
我认为自从我使用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 :(得分: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')));
它有效! :)