避免在RequireJS主文件和r.js构建文件中重复“路径”配置?

时间:2013-07-03 19:15:16

标签: javascript requirejs r.js almond

这是我文件夹结构的一部分:

  • 节点测试
    • bower_components
    • 构建
    • 公共
      • main.js
    • build.js

使用r.js -o build.js运行优化程序,以下配置正常工作:

// main.js file
requirejs.config({
    baseUrl: '../bower_components',
    paths: {
        'domready': 'domready/ready',
        'jquery': 'jquery/jquery',
    }
});

requirejs(['domready', 'jquery'], function (domReady, $) {
    domReady(function () {

    });
});

// build.js file
({
    baseUrl: "bower_components",
    name: "./almond/almond",
    include: "./../public/main",
    out: "build/main.js",
    paths: {
        'domready': 'domready/ready',
        'jquery': 'jquery/jquery',
    },
    preserveLicenseComments: false
})

但是,如果我删除paths中的build.js配置,则它不再有效:

  

跟踪以下内容的依赖项:./ golden / almond错误:ENOENT,没有此类文件   或目录   'C:\用户\马科\文件\ PROGETTI \的NodeJS-OPT \ bower_components \ domready.js'   在模块树中:       ../公共/主

     

错误:错误:ENOENT,没有此类文件或目录   'C:\用户\马科\文件\ PROGETTI \的NodeJS-OPT \ bower_components \ domready.js'   在模块树中:       ../公共/主

at Object.fs.openSync (fs.js:427:18)

我想要干,避免两次添加依赖。这可能吗?

1 个答案:

答案 0 :(得分:15)

如果要使用运行时代码中的相同配置来查找库的位置,可以使用mainConfigFile选项:

  

...如果您更喜欢为构建读取“主”JS文件配置,以便您不必在单独的配置中复制值,请将此属性设置为该主JS文件的位置。将使用在该文件中找到的第一个requirejs({}),require({}),requirejs.config({})或require.config({})调用。

这样的事情:

({
    baseUrl: "bower_components",
    mainConfigFile: '/some/path/main.js', // adjust path as needed
    name: "./almond/almond",
    include: "./../public/main",
    out: "build/main.js",
    preserveLicenseComments: false
})