【问题标题】:gruntjs / angularjs - optional development config?gruntjs / angularjs - 可选的开发配置?
【发布时间】:2014-09-19 07:32:55
【问题描述】:

与大多数 js Web 应用程序一样,我们有一个 config.js 文件,其中包含有关应用程序、基本 api url 等的全局配置信息。这些值在本地开发中与在生产中通常不同。

我查看了以下答案:Development mode for AngularJS using GruntJS,以及用于创建动态配置文件的 grunt-replace。

我的问题是“开发”部分因开发人员而异,我们都需要一个 API 设置版本,因此基本 api url 会有所不同。我想允许每个开发人员以一种不需要他们将该信息提交到 git repo 的方式覆盖配置中的特定变量(我同意这不是最佳实践,一切都应该在 repo 中,但由于这只是这个项目的 1/2 变量,我可以忽略它)

关于如何实现此设置的任何想法?

【问题讨论】:

    标签: angularjs gruntjs typescript


    【解决方案1】:

    您可以使用grunt-preprocess。我会在一个文件中有生产(和开发服务器等)值,比如env.json。您可以使用 grunt 来查找可选文件,例如 overrides.jsondeveloper.json,这将扩展/覆盖来自 env.json 的值。

    var envFile = require('./env.json');
    

    您可以使用grunt.option 创建命令行选项,例如var env = grunt.option('env') || undefined;,可用于关闭覆盖。

    您可以使用fs.existsSync从可选文件中获取数据:

    var fs = require('fs');
    var developerFile;
    if (fs.existsSync('./developer.json')) {
      developerFile = require('./developer.json');
    }
    

    定义 grunt-preprocess 上下文的最简单方法是使用developer.json 文件(如果存在)或env.json 文件(如果不存在):

    context: developerFile ? developerFile : envFile;
    

    这需要开发者文件是完整的。另一种方法是使用 developerFile 中的选项扩展 envFile(如果存在)。

    【讨论】:

    • 我喜欢这个声音。你能扩展一些细节吗?如何使用 grunt 查找可选文件?因为那是我无法解决的问题。
    【解决方案2】:

    在我的项目中,我们使用不同的配置文件(基本上是带有 JS 对象的文件)。所以每个开发者都有他的app/configs/developer/config.js 文件,这个文件在源代码管理中是没有的,所以每个开发者都有自己的设置。项目默认使用指向app/scripts/config.js 的链接,该文件只是指向开发人员配置文件的软链接。不过也有app/configs/staging/config.jsapp/configs/production/config.js文件,在使用gruntjj构建项目的时候会被替换掉。这些配置只是被复制来构建解决方案而不是软链接文件。

    我希望这是有道理的..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-01
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多