gulp-merge-json-no-intersection

0.0.1 • Public • Published

gulp-merge-json

NPM Version Build Status Coverage Status Dependency Status Dev Dependency Status

A gulp plugin for deep-merging multiple JSON files into one file. Export as JSON or a node module.

Usage

var merge = require('gulp-merge-json');
 
/*
    Basic functionality
 */
gulp.src('jsonFiles/**/*.json')
    .pipe(merge('combined.json'))
    .pipe(gulp.dest('./dist'));
 
/*
    Edit JSON with function
 */
gulp.src('jsonFiles/**/*.json')
    .pipe(merge('combined.json', function(parsedJson, file) {
        if (parsedJson.someValue) {
            delete parsedJson.otherValue;
        }
 
        return parsedJson;
    }))
    .pipe(gulp.dest('./dist'));
 
/*
    Provide a default object (files are merged in order so object values will be overwritten)
 */
gulp.src('jsonFiles/**/*.json')
    .pipe(merge('combined.json', false, {someKey: 'defaultValue'}))
    .pipe(gulp.dest('./dist'));
 
/*
    Provide an overwriting object (merged at the end)
 */
gulp.src('jsonFiles/**/*.json')
    .pipe(merge('combined.json', false, false, {someKey: 'specialValue'}))
    .pipe(gulp.dest('./dist'));
 
/*
    Use module.exports
 */
gulp.src('jsonFiles/**/*.json')
    .pipe(merge('dataModule.js', false, false, false, true))
    .pipe(gulp.dest('./dist'));
 
/*
    Use a custom variable to prefix
 */
gulp.src('jsonFiles/**/*.json')
    .pipe(merge('dataModule.js', false, false, false, 'var my.var'))
    .pipe(gulp.dest('./dist'));
 
 
/*
   Provide options as an object
*/
gulp.src('jsonFiles/**/*.json')
    .pipe(merge({
        fileName: 'dataModule.js',
        edit: function(parsedJson, file) {
            if (parsedJson.someValue) {
                delete parsedJson.otherValue;
            }
        },
        startObj: {someKey: 'defaultValue'},
        endObj: {someKey: 'specialValue'},
        exportModule: false,
    })
    .pipe(gulp.dest('./dist'));
 
/*
  Provide replacer and space options for JSON.stringify
*/
gulp.src('jsonFiles/**/*.json')
    .pipe(merge({
        fileName: 'dataModule.js',
        jsonSpace = '  ',
        jsonReplacer = function() {/*...*/}
    })
    .pipe(gulp.dest('./dist'));
 
/*
    Concatenate arrays
 */
gulp.src('jsonFiles/**/*.json')
    .pipe(merge('combined.json', false, false, false, false, true))
    .pipe(gulp.dest('./dist'));
 
gulp.src('jsonFiles/**/*.json')
    .pipe(merge({
        fileName: 'combined.json',
        concatArrays: true,
    }))
    .pipe(gulp.dest('./dist'));
 
/*
    JSON5
 */
gulp.src('jsonFiles/**/*.json5')
    .pipe(merge({
        fileName: 'combined.json5',
        json5: true,
    }))
    .pipe(gulp.dest('./dist'));

Example Input

/*
    json/defaults.json
 */
{
    "key1": {
        "data1": "value1",
        "data2": "value2"
    },
    "key2": {
        "dataA": "valueA",
        "dataB": {
            "a": "b",
            "c": "d"
        }
    }
}
 
/*
    json/development.json
 */
{
    "key1": {
        "data1": "devValue"
    },
    "key2": {
        "dataB": {
            "c": "DEV MODE!"
        }
    },
    "key3": {
        "important": "value"
    }
}

Example Output

/*
    dist/combined.json
 */
{
    "key1": {
        "data1": "devValue",
        "data2": "value2"
    },
    "key2": {
        "dataA": "valueA",
        "dataB": {
            "dataA": "valueA",
            "dataB": {
                "a": "b",
                "c": "DEV MODE!"
            }
        }
    },
    "key3": {
        "important": "value"
    }
}

Package Sidebar

Install

npm i gulp-merge-json-no-intersection

Weekly Downloads

1

Version

0.0.1

License

MIT

Last publish

Collaborators

  • kitsh