UNPKG

@nois/sails-util-mvcsloader

Version:

Load models, controllers, services, policies and config from specified directories and inject them into the main Sails app.

47 lines (37 loc) 1.29 kB
/** * Load config from a directory into a Sails app */ const includeAll = require("include-all"); const _ = require("lodash"); const colors = require("colors"); const mergeDictionaries = require("merge-dictionaries"); module.exports = function(sails, dir, cb) { includeAll.aggregate({ dirname: dir, exclude: ["locales", /local\..+/], excludeDirs: /(locales|env)$/, flatten: true, keepDirectoryPath: true, identity: false }, function(err, userConfig) { if (err) { console.log(colors.red("Failed to load plugin's configs")); console.log(err); return cb(err); } // sails.config = _.merge(configs, sails.config, (a, b) => _.isArray(a) ? a.concat(b) : undefined) // // Using this hack to reset and bind our policies to router // sails._actionMiddleware = []; // sails.router.flush(); let config = {}; const overrides = _.clone(sails.config); // Merge the overrides into the loaded user config. config = mergeDictionaries(overrides, userConfig); // Ensure final configuration object is valid // (in case moduleloader fails miserably) config = _.isObject(config) ? config : (sails.config || {}); // Save final config into sails.config sails.config = config; cb(null); }); };