@mewjs/manis v2.0.1
Manis
For build system plugins that need to fetch relative config files (like .mewrc).
Install
npm install @mewjs/manisUsage
Using strip-json-comments
import Manis from '@mewjs/manis';
import stripJSONComments from 'strip-json-comments';
const loader = (text: string) => JSON.parse(stripJSONComments(text));
const manis = new Manis({
files: [
{
// just for example, it should be loaded as yaml in fact.
name: '.eslintrc',
get(json: JSONObject) {
return {eslint: json};
}
},
'.mewrc',
{
name: 'package.json',
get(json: JSONObject) {
return json.mew || {};
}
}
],
loader: loader
});
const configs = manis.from('path/to/file.js');
// do something cool with configsLoading .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 configs = manis.from('path/to/file.js');
// do something cool with configsWith defaults
import Manis from '@mewjs/manis';
const manis = new Manis({
files: [
'.mewrc',
{
name: 'package.json',
get: 'mew'
}
]
});
manis.setDefault('default/path/to/config/mew.json');
const configs = manis.from('path/to/file.js');
// do something cool with configsUser config
import Manis from '@mewjs/manis';
const manis = new Manis({
files: [
'.mewrc',
{
name: 'package.json',
get: 'mew'
}
]
});
manis.setDefault('default/path/to/config/mew.json');
// will find `~/.mewrc`
manis.setUserConfig();
const configs = manis.from('path/to/file.js');
// do something cool with configsWithin a gulp plugin
var Manis = require('manis');
var map = require('map-stream');
module.exports = function MyGulpPlugin(options) {
var manis = new Manis('.mewrc', options);
return map(function (file, cb) {
// get the configs for this file specifically
var configs = 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[] finderOptions, 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 whenenableRootset 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, Function, 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.