2016-10-26 5 views
1

私は各ディレクトリにhome.json、contact.json、case.jsonなどの構造を持っています。これをhome-combined.jsonのように1つにマージします。gulpタスクの変数に* .jsonのファイル名を取得

私は、ファイルの名前を取得するには、このページ名の変数を使用していますが、結果は*-combined.json代わりのhome-combined.json

gulp.task('json-merge',['json'], function(){ 

    return gulp.src(directories.src + '/json-combined/**/*.json') 
    var file = directories.src + '/json-combined/**/*.json' 
    var pageName = path.basename(file, path.extname(file)) 

    .pipe(jsonMerge({ 
     fileName: pageName + '-combined.json', 
     edit: function(parsedJson, file) { 
     var component = path.basename(path.dirname(file.path)); 
     var editedJson = {}; 
     editedJson[camelCase(component)] = parsedJson; 
     return editedJson; 
     } 
    })) 

    .pipe(gulp.dest(paths.json.dest)) 
}); 
+0

あなた 'var'sが...ストリームに挟まれていることができない可能性が作業。 –

答えて

0

代わりのある、*-combined.jsonにファイル名を設定する*.jsonのファイル名を取得する必要があります

home.json

{ 
    one: 1 
} 
:あなたはこれを行うにしようとしている場合、私は次のことを行うと何をしています

{ 
    two: 2 
} 

other.json

、あなたが取得したい: 家庭combined.json

{ 
    one: 1, 
    two: 2 
} 

使用この一気モジュールhttps://www.npmjs.com/package/gulp-merge-json

あなたの場合の例は次のようになります。

var jsonmerge = require('gulp-merge-json'); 
var paths = require('./pathsFile.json'); 

/* 
    Basic functionality 
*/ 
gulp.task('json-merge', function(){ 
    return gulp.src('jsonFiles/**/*.json') 
      .pipe(jsonmerge('home-combined.json')) 
      .pipe(gulp.dest(paths.json.dest)); 
}); 

唯一の差異ここでは、解析するファイルの名前を指定する必要はありません。

これがあなたの質問に答えるかどうかは不明ですが、必要なものを指定すると自分の回答を編集できます。

--edit

あなたは、ストリームは、例えばどこから来ている指定することができゴクゴクと異なるディレクトリからファイルを取得するには:

return gulp.src([dir1 + 'jsonFiles/**/*.json', 
        dir2 + 'jsonFiles/**/*.json', 
        dir3 + 'jsonFiles/**/*.json']) 
+0

私はいくつかのhome.jsonとother.jsonがjsonFiles/** /に広がっています。例えば、 jsonFile/component-1/home.json、jsonFile/component-1/other.json jsonFile/component-2/home.json 、jsonFile/component-1/other.json jsonFile/component-3/home.json、jsonFile/component-3/other.jsonなど。 これらをhome-combined.json/other-combinedにマージします。 jsonには、編集機能でファイル名を作成するためにjsonファイルの名前が必要になります。 – lottebijl

+0

私はあなたが今何を意味しているのか理解していますが、ブロブストリームからファイルを取り出すことをお勧めしますが、特定の順序ではない複数のファイルを含むブロブを解析する日の終わりにお勧めします。あなたが望むものを選択して選択することは可能ですが、それは価値があるものよりも大きな面倒なことかもしれません。あなたはディレクトリとあなたが望むファイルを知っているので、それを言っている。私は、結合された各jsonファイルごとに異なるグルップタスクを作成することをお勧めします。また、時計とデフォルトのタスクまたはgulp cliで呼び出すことができる1つのGulp配列へのすべての呼び出しを結合します。 – CriCri

関連する問題