Grunt任务可选择包括针对不同环境的AMD模块

时间:2013-06-29 18:05:55

标签: requirejs gruntjs

我正在开发一个使用Require.js for AMD的web应用程序和amplify.request来抽象我的AJAX调用。 amplify.request的另一个好处是我已经定义了一个替代模块,其中包含我可以用于测试目的的模拟版本的请求。目前,我只是在main.js文件中注释/取消注释模块引用,在我的请求模块的两个版本之间切换。

我喜欢做的是使用Grunt创建我的应用程序的不同版本,具体取决于我想要包含的模块。我也可以使用它来打开或关闭我的调试模式。我正在想象类似于usemin的内容,仅适用于JavaScript内部的引用,而不是HTML。

任何人都知道这样做的插件,或者有关于如何使用Grunt进行操作的建议?

1 个答案:

答案 0 :(得分:1)

在我们目前的项目中,我们有几个不同的环境。对于它们中的每一个,我们可以为requirejs构建指定不同的配置设置。 为了区分这些不同的环境,我使用了参数target

你可以通过将它附加到你的电话中来简单地传递给grunt,如

grunt --target=debug

您可以使用grunt.option访问Gruntfile中的此参数,例如

var target = (grunt.option('target') || 'debug').toLowerCase();

上面的行将默认为debug。然后,您可以使用requirejs的paths配置设置将构建指向正确的模块。下面的示例代码。

requirejs: {
    compile: {
        options: {  
            paths: {
                "your/path/to/amplify/request": target === "debug" ? "path/to/mock" : "path/to/real",
                }   
            }
        }
}