Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
111 lines (72 sloc) 2.3 KB

multi-profile NPM version Build Status Dependency Status

Multi-profile is a module to manage global configurations for multiple profiles.


npm install multi-profile --save


var profile = require('multi-profile');
var data = {};
var p = profile({
  path: '~/.cortex',
  context: data,
  schema: {
    port: {
      value: 8888,
      type: {
        validator: function(v, key, attr) {
          if (v <= 9000) {
            attr.error('`port` must greater than 9000');
          // If you've already called `attr.error`, it will be considered a failure,
          // which means it's not necessary to return a value
          return v > 9000;
        setter: function(v, key, attr) {
          // `this` <=> `data`
          // The return value will set to the multi-profile instance.
          // And in the same time, we set `port` to `data`
          return this.port = v;
        getter: function(v, key, attr) {
          return this.port || v;

    rcfile: {
      value: '~/.bashrc'

// .init() method must be called before any invocations of other methods.


Instance Methods


Add a profile


Get all profile names


Get the name of the current profile


Switch to a profile


Delete a profile by name

.set(key, value)

Set a configuration. If key is not in the schema, nothing will be done.


Set a bunch of configurations


Get all configurations of the curent profile


Get the configuration of the current profile by key


Returns path the path of the configuration file.


Save data to the configuration.

If data is not specified, all writable key-values will be saved.

Static Methods


Resolve '~/' to the absolute home path of the curernt user.