有没有一种方法可以跳过在sails.js应用程序中加载某些配置文件?

时间:2019-12-11 23:46:52

标签: javascript sails.js

是否可以将.js文件放入sails.js / config目录中,并指示Sails跳过它们?即举起时不会自动加载它们吗?

我想利用sails.js config.custom 功能。但是,我的应用程序具有大量的自定义设置,因此我想将它们拆分为单独的文件(例如,custom1.js,custom2.js等)。但是,我需要按特定顺序加载自定义设置,因为这些设置引用了每个其他,因为创建了作为设置执行的代码。

我当时想的是使用custom.js文件根据需要加载我的设置模块,以便我可以控制其构建方式。也许做这样的事情:

let customSettings1 = require('./custom1.js');
let customSettings2 = require('./custom2.js');
let settings = {
    cust1:customSettings1,
    cust2:customSettings2
}
module.exports.custom = settings;

但是,这种方法意味着我需要指示sails.js忽略我的子集定制模块,因为一旦custom1.js存在于/ config文件夹中,它将被自动加载。有办法吗?

2 个答案:

答案 0 :(得分:1)

您不能阻止Sails加载某些文件,但是仍然有解决方案。

基于其他研究和@nathanhawks的回答,Sails.js确实会自动加载/ config文件夹和子文件夹中的所有.js文件...无法告诉Sails跳过任何内容。但是,它会跳过它无法识别的扩展名,因此这提供了一个机会,可以继续使用/ config文件夹,但可以控制要加载的内容。这是我所做的:

/config/custom.js <-该文件具有加载我自己的所有自定义配置文件的逻辑
/config/custom/settings1.config <-这是一个常规模块文件,只是以扩展名“ .config”重命名,并放在名为“ custom”的子文件夹中。您可以根据需要将设置分为多个文件。由于Sails.js无法识别.config,因此它会在自动加载配置文件时跳过。但是,它将加载您的主要custom.js文件,在这里您可以自行加载.config文件。

在custom.js中,您可以执行以下操作:

let set1 = require('./custom/settings1.config');
let set2 = require('./custom/settings2.config');
let set3 = require('./custom/settings3.config');

let mySettings = {
   mySettings1 : set1,
   mySettings2 : set2,
   mySettings3 : set3,
   myFunction : function() {
      // can add custom functions to your custom config object, like special getter/setters or anything else
   }
}
module.exports = mySettings;

答案 1 :(得分:0)

不。如果它们位于config文件夹或任何子文件夹中,则将加载它们。但是,一旦将它们放置在新文件夹中,就可以在config/custom.js逻辑中有条件地要求它们。

如果还没有唤醒帆(在配置加载期间)以适应您的逻辑,则可以随时设置配置变量:

sails.config.custom.test = 'wut';
console.log(sails.config.custom.test);