Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    normalize-configpublic

    normalize-config NPM version

    Normalize a declarative configuration with any combination of src-dest mappings, files arrays, files objects and options into a consistent format so the config can easily be passed to any build system.

    Install

    Install with npm:

    $ npm i normalize-config --save

    Usage

    var config = require('normalize-config');

    All of the following normalize to the same object:

    config('*.js', 'dist/')
    //=> { files: [ { src: [ '*.js' ], dest: 'dist/' } ] }
    config(['*.js'], 'dist/')
    //=> { files: [ { src: [ '*.js' ], dest: 'dist/' } ] }
    config({'dist/': '*.js'})
    //=> { files: [ { src: [ '*.js' ], dest: 'dist/' } ] }
    config({'dist/': ['*.js']})
    //=> { files: [ { src: [ '*.js' ], dest: 'dist/' } ] }
    config({src: '*.js', dest: 'dist/'})
    //=> { files: [ { src: [ '*.js' ], dest: 'dist/' } ] }
    config({src: ['*.js'], dest: 'dist/'})
    //=> { files: [ { src: [ '*.js' ], dest: 'dist/' } ] }
    config({files: {'dist/': '*.js'}})
    //=> { files: [ { src: [ '*.js' ], dest: 'dist/' } ] }
    config({files: {'dist/': ['*.js']}})
    //=> { files: [ { src: [ '*.js' ], dest: 'dist/' } ] }
    config({files: [{'dist/': ['*.js']}]})
    //=> { files: [ { src: [ '*.js' ], dest: 'dist/' } ] }

    Examples

    All of the following:

    // src | dest | options
    config('*.js', 'dist/', {cwd: 'lib'});
     
    // {src, dest, options}
    config({src: '*.js', dest: 'dist/', options: {cwd: 'lib'}});
     
    // {src, dest} | options
    config({src: '*.js', dest: 'dist/'}, {cwd: 'lib'});

    result in:

    { 
      options: { cwd: 'lib' },
      files: [ 
        { options: { cwd: 'lib' }, 
          src: [ '*.js' ], 
          dest: 'dist/' 
        } 
      ]
    }

    All of the following result in the same object:

    config('lib/*.js', 'foo/');
    config({'foo/': 'lib/*.js'});
    config({dest: 'foo/', src: 'lib/*.js'});
    //=> { files: [{ src: [ 'lib/*.js' ], dest: 'foo/' }]}

    no dest

    All of the following result in the same object:

    config('lib/*.js');
    config(['lib/*.js']);
    config({'': 'lib/*.js'});
    config({'': ['lib/*.js']});
    config({src: 'lib/*.js'});
    config({src: ['lib/*.js']});
    config({src: 'lib/*.js', dest: ''});
    config({src: ['lib/*.js'], dest: ''});
    //=> {files: [{ src: ['lib/*.js'], dest: ''}]}

    with dest

    All of the following result in the same object:

    config('lib/*.js', 'foo/');
    config(['lib/*.js'], 'foo/');
    config({'foo/': 'lib/*.js'});
    config({'foo/': ['lib/*.js']});
    config({src: ['lib/*.js'], dest: 'foo/'});
    config({src: 'lib/*.js', dest: 'foo/'});
    //=> {files: [{ src: ['lib/*.js'], dest: 'foo/'}]}

    Related projects

    Running tests

    Install dev dependencies:

    $ npm i -d && npm test

    Contributing

    Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

    Author

    Jon Schlinkert

    License

    Copyright © 2016 Jon Schlinkert Released under the MIT license.


    This file was generated by verb on January 05, 2016.

    install

    npm i normalize-config

    Downloadsweekly downloads

    33

    version

    0.4.8

    license

    MIT

    repository

    githubgithub

    last publish

    collaborators

    • avatar
    • avatar