设置(Configuration)

概述

虽然 Sails 尽责的坚守约定优于配置的理念,但了解如何自定义这些方便的默认值是很重要的。对于几乎每个 Sails 的约定,允许你调整或覆盖附带的设置选项,以满足你的需求。本章节的文件完整包含了 Sails 可用的设置选项。

Sails 应用程序可以通过程序设置,通过指定环境变数或命令行参数,通过改变区域或全局 .sailsrc 文档,或(最常见)使用约定位于工程内 config/ 文件夹的模板设置文档。执行时期可通过 sails 全局变数的 sails.config 在应用程序使用合并后的设置。

标准设置文档 (config/*)

在默认情况下,新的 Sails 应用程序包含许多的设置文档。这些模板文档包含了一些行内注解,目的是为了提供一个快速、即时的参考,而不必来回跳转于文件与文字编辑器之间。

在多数情况下,sails.config 对象的顶层键(例如 sails.config.views)对应在应用程序内特定的设置文档(例如 config/views.js);而设置可以安排在 config/ 目录内任何你喜欢的文档中。重要的部分是设置的名称(即键),不是它从哪个文档来。

举例来说,假设你新增一个新文档,config/foo.js

// config/foo.js
// 对象会被合并到 `sails.config.blueprints`:
module.exports.blueprints = {
  shortcuts: false
};

对于个别设置项目的详细参考资料,默认存在于该设置文档中,请参考本章节内的参考资料页面,或查看Sails 应用程序剖析config/取得更多的说明。

在你的应用程序存取 sails.config

config 对象存在于 Sails 应用程序实例(sails)。默认情况下,在启动时会置于全局范围,因此存在于应用程序的任何地方。

例子
// 这个例子检查在生产环境时 csrf 必需启动。
// 否则,抛出错误并终止应用程序。
if (sails.config.environment === 'production' && !sails.config.csrf) {
  throw new Error('STOP IMMEDIATELY ! CSRF should always be enabled in a production deployment!');
}

自定义组件设置

Sails 能辨认顶层键下的许多不同设置、命名空间(如 sails.config.socketssails.config.blueprints)。但你也可以在你的自定义组件设置使用 sails.config(如sails.config.someProprietaryAPI.secret)。

例子
// config/linkedin.js
module.exports.linkedin = {
  apiKey: '...',
  apiSecret: '...'
};
// 在你的 controller/service/model/hook/whatever:
// ...
var apiKey = sails.config.linkedin.apiKey;
var apiSecret = sails.config.linkedin.apiSecret;
// ...

设置 sails 命令行界面

当谈到设置,大部分时间你会专注于管理特定应用程序的执行时期设置:连接埠、资料库连线,等等。然而,为了简化你的工作流程,减少重复性任务,执行自定义的自动化建置等,自定义 Sails 命令行界面也是很有用的。值得庆幸的是,Sails v0.11 增加了强大的新工具来做到这一点。

.sailsrc 文档与其他在 Sails 中的设置文档不同,它也可以被用于设置 Sails 命令行界面-无论是全系统、目录群组或仅当你 cd 到特定文件夹。这样做的主要理由是自定义用于执行 sails generatesails new 的[产生器](http://beta.sailsjs.org/#/documentation/concepts/extending-sai