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

9

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

  • node-test
    • bower_components
    • build
    • public
      • 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
})

然而,如果我在 build.js 中删除 paths 配置,它就不能正常工作:

Tracing dependencies for: ./almond/almond Error: ENOENT, no such file or directory 'C:\Users\Marco\Documents\Progetti\nodejs-opt\bower_components\domready.js' In module tree: ../public/main

Error: Error: ENOENT, no such file or directory 'C:\Users\Marco\Documents\Progetti\nodejs-opt\bower_components\domready.js' In module tree: ../public/main

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

我想要做到DRY,避免重复添加依赖。这可行吗?

1个回答

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
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接