Requirejs Grunt任务,可选择为不同环境包含AMD模块

Requirejs Grunt任务,可选择为不同环境包含AMD模块,requirejs,gruntjs,Requirejs,Gruntjs,我正在为AMD开发一个web应用程序,使用Require.js和amplify.request来抽象我的AJAX调用。amplify.request的另一个优点是,我定义了一个替代模块,其中包含我的请求的模拟版本,可以用于测试目的。目前,我只需在main.js文件中注释/取消注释模块引用,就可以在请求模块的两个版本之间切换 我想做的是使用Grunt创建我的应用程序的不同版本,这取决于我想要包含的模块。我也可以用它来做一些事情,比如打开或关闭调试模式。我正在描绘类似的东西,只用于JavaScrip

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

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


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

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

您只需将它附加到您的调用中即可将其传递给grunt,如

grunt --target=debug
您可以使用
grunt.option
在GrunFile中访问此参数,如

var target = (grunt.option('target') || 'debug').toLowerCase();
上面的行将默认为
debug
。然后,您可以使用requirejs的
路径
配置设置将构建指向正确的模块。下面是示例代码

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

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

您只需将它附加到您的调用中即可将其传递给grunt,如

grunt --target=debug
您可以使用
grunt.option
在GrunFile中访问此参数,如

var target = (grunt.option('target') || 'debug').toLowerCase();
上面的行将默认为
debug
。然后,您可以使用requirejs的
路径
配置设置将构建指向正确的模块。下面是示例代码

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

这真的很有帮助,完全可以让我根据环境使用/不使用特定的模块。有没有在我的代码中编辑特定变量的想法(例如,打开/关闭调试设置?)。我想我可以创建一个单独的模块,用不同的方式设置变量,但如果可能的话,我宁愿动态设置它。定义一个包含开关变量的设置模块怎么样?根据目标变量,您可以加载到另一个模块中,该模块包含这些开关值的不同值。在我们的项目中,我们有这样一个模块(AppSettings),但是我们没有加载到另一个模块中,而是使用requirejs.Wow的
onBuildWrite
选项覆盖设置,
onBuildWrite
是我不知道的一个非常强大的选项。我想这肯定符合要求,或者我可以按照你的建议,把整个模块换掉。谢谢这真的很有帮助,完全可以让我根据环境使用/不使用特定的模块。有没有在我的代码中编辑特定变量的想法(例如,打开/关闭调试设置?)。我想我可以创建一个单独的模块,用不同的方式设置变量,但如果可能的话,我宁愿动态设置它。定义一个包含开关变量的设置模块怎么样?根据目标变量,您可以加载到另一个模块中,该模块包含这些开关值的不同值。在我们的项目中,我们有这样一个模块(AppSettings),但是我们没有加载到另一个模块中,而是使用requirejs.Wow的
onBuildWrite
选项覆盖设置,
onBuildWrite
是我不知道的一个非常强大的选项。我想这肯定符合要求,或者我可以按照你的建议,把整个模块换掉。谢谢