0.3.5 • Published 5 years ago

manis v0.3.5

Weekly downloads
783
License
MIT
Repository
github
Last release
5 years ago

Manis

For build system plugins that need to fetch relative config files (like .fecsrc).

Build Status NPM version Coverage Status DevDependencies

Install

npm install manis

Usage

Using strip-json-comments

var Manis = require('manis');
var stripJSONComments = require('strip-json-comments');

var loader = function (text) {
    return JSON.parse(stripJSONComments(text));
};

var manis = new Manis({
    files: [
        {
            // just for example, it should be loaded as yaml in fact.
            name: '.eslintrc',
            get: function (json) {
                return {eslint: json};
            }
        },
        '.fecsrc',
        {
            name: 'package.json',
            get: function (json) {
                return json.fecs || {};
            }
        }
    ],
    loader: loader
});

var options = manis.from('path/to/file.js');

// do something cool with options

NOTICE: the default loader strip comment after manis@0.3.0.

Loading .yml with js-yaml

var yaml = require('js-yaml');

var Manis = require('manis');

var loader = function (text) {
    return yaml.load(text);
};

var manis = new Manis('.travis.yml', {loader: loader});

var options = manis.from('path/to/file.js');

// do something cool with options

NOTICE: the default loader used js-yaml to load YAML and JSON content after manis@0.3.0.

With defaults

var Manis = require('manis');

var manis = new Manis({
    files: [
        '.fecsrc',
        {
            name: 'package.json',
            get: 'fecs'
        }
    ]
});

manis.setDefault('default/path/to/config/fecs.json');

var options = manis.from('path/to/file.js');

// do something cool with options

User config

var Manis = require('manis');

var manis = new Manis({
    files: [
        '.fecsrc',
        {
            name: 'package.json',
            get: 'fecs'
        }
    ]
});

manis.setDefault('default/path/to/config/fecs.json');

// will find `~/.fecsrc`
manis.setUserConfig();

var options = manis.from('path/to/file.js');

// do something cool with options

Within a gulp plugin

var Manis = require('manis');
var map = require('map-stream');

module.exports = function MyGulpPlugin(options) {
    var manis = new Manis('.fecsrc', options);

    return map(function (file, cb) {

        // get the options for this file specifically
        var options = manis.from(file.path);

        // do something cool

        // send the file along
        cb(null, file);

    });
};

API

new Manis(string fileName, Object options);

new Manis(string[] fileNames, Object options);

new Manis(Object[] finderOptioins, Object options);

new Manis(Object options);

void Manis#setDefault(Object defaultValue);

void Manis#setDefault(string filePath, Object finderOptions);

void Manis#setUserConfig();

void Manis#setUserConfig(Object userConfig);

void Manis#setUserConfig(string userConfigPathOrName, Object finderOptions);

Object Manis#from(string path);

Manis.yaml;

Alias for js-yaml module.

Object Manis.loader;

The default loader, parse JSON or YAML content with js-yaml.

Object Manis#from(string path);

options

  • files, Array or string, items could be string or Object.

  • loader, Function,parser for config content.

  • lookup, Boolean, Find all up-level config files. default is true.

  • merge, Boolean, Merge all config objects. default is true.

  • cache, Boolean, Cache config files. default is true.

  • rootName, String, The name of flag when enableRoot set to true. default is 'root'.

  • enableRoot, Boolean, Enable the root flag to stop lookup in up-level directory. default is false.

  • stopper, Function, the predicate for stopping search. default is null.

finderOptions

  • name, string, the file name to be searched.

  • loader, Funtion, the same as options.loader above;

  • stopper, Function, the predicate for stopping search.

  • get, string or Function, the field name to retrieve from config object.

  • cache, Boolean, Cache config files. default is true.

0.3.5

5 years ago

0.3.4

6 years ago

0.3.3

6 years ago

0.3.2

6 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.3.0-beta.2

8 years ago

0.3.0-beta.1

8 years ago

0.2.3

9 years ago

0.2.2

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago