可以跳过带有r.js构建的内联命名模块吗?

时间:2014-01-08 21:38:08

标签: javascript build requirejs r.js

在我的应用程序中,我在index.html中有一个内联定义的命名模块:

<script>
    define('config', {
        mode: '...',
        environment: '...',
        apiUrl: '...',
        rootPath: '...',
        baseImageUrl: '...'
    });
</script>

我需要在我的网页中定义它,因为我在使用环境变量时提取了一些内容。所以,在我的模块中,我可以包含'config':

define(['config', 'jquery'], function(config, $) { ... });

当我使用Grunt运行RequireJS构建(使用grunt-require,它使用r.js)时,它抱怨它没有找到config.js。我的构建配置如下所示:

{
    baseUrl: 'js',
    main: 'app/Main',
    dir: 'js/build',
    out: null,
    modules: { ... },
    paths: { ... },
    shim: { ... }
}

当我建立时,我得到:

Error: Error: ENOENT, no such file or directory '/projects/projectname/js/build/config.js

如何允许将命名的内联定义模块与r.js构建结合使用?

1 个答案:

答案 0 :(得分:1)

设置

paths: {
   config : 'empty:'
}
构建配置文件中的

应该将此模块排除在优化过程之外,因此会停止引发此错误。

但这有点棘手,因为这个选项通常用于排除第三方依赖项(例如,在开发基于Backbone的js库时,最好将lib与Backbone分开)