1

我正在开发一个使用 AMD 的 Require.js 和 amplify.request 来抽象出我的 AJAX 调用的 Web 应用程序。amplify.request 的另一个优点是我定义了一个替代模块,其中包含我的请求的模拟版本,我可以将其用于测试目的。目前,我通过简单地在我的 main.js 文件中注释/取消注释模块引用来在我的请求模块的两个版本之间切换。

我想做的是使用 Grunt 来创建我的应用程序的不同版本,具体取决于我想要包含的模块。我也可以用它来做一些事情,比如打开或关闭我的调试模式。我正在描绘类似于usemin的东西,仅用于 JavaScript 内部的引用,而不是 HTML。

任何人都知道这样做的插件,或者对我如何使用 Grunt 有建议?

4

1 回答 1

1

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

您可以简单地将其传递给 grunt,方法是将其附加到您的调用中,例如

grunt --target=debug

你可以在 Gruntfile 中访问这个参数,通过使用grunt.option,比如

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

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

requirejs: {
    compile: {
        options: {  
            paths: {
                "your/path/to/amplify/request": target === "debug" ? "path/to/mock" : "path/to/real",
                }   
            }
        }
}
于 2013-07-01T09:34:21.593 回答