【问题标题】:r.js from node script?r.js 来自节点脚本?
【发布时间】:2014-11-04 04:22:57
【问题描述】:

我觉得这一定很明显,但它在逃避我。

我想从一个节点模块而不是从命令行运行 requirejs 的 r.js 编译,而我看到的每一位文档都只显示了命令行选项。我正在寻找这样的东西:

var r = require('requirejs');
r('./build/common.js');
r('./build/app-main.js');

如果有更好的方法,让我解释一下潜在的动机:

我有几个不同的 build.js 文件,我想在这些文件上运行 r.js(公共依赖项和主应用程序的单独包)。我想把它包装在一个同时运行的 gulpfile 或 gruntfile 中,而不像 grunt 和 gulp require.js 插件那样将所有 r.js 配置放在实际的 grunt/gulp 文件中。将 r.js 配置留在单独的 build/*.js 文件中可以让我们在需要时使用 grunt/gulp OR 命令行。

有什么方法可以做到这一点?

【问题讨论】:

    标签: node.js requirejs r.js


    【解决方案1】:

    将优化器用作 Node 模块 is documented 但它不是最明显的地方。这是文档给出的示例:

    var requirejs = require('requirejs');
    
    var config = {
        baseUrl: '../appDir/scripts',
        name: 'main',
        out: '../build/main-built.js'
    };
    
    requirejs.optimize(config, function (buildResponse) {
        //buildResponse is just a text output of the modules
        //included. Load the built file for the contents.
        //Use config.out to get the optimized file contents.
        var contents = fs.readFileSync(config.out, 'utf8');
    }, function(err) {
        //optimization err callback
    });
    

    【讨论】:

    • 感谢您,这让我走上了正轨。您是对的,该文档不在最明显的位置。我最初尝试过 r.optimize('build/app-main.js');这根本不起作用,所以我放弃了,但是在看到你的答案并知道这是正确的路径之后,我深入研究了 r.js 源代码,发现它会接受一个文件 如果它在一个数组。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多