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

Avoid duplication of "paths" configuration in RequireJS main file and r.js build file?

本文关键字:构建 js 文件 配置 RequireJS 路径 主文件      更新时间:2023-09-26

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

  • 节点测试
    • bower_组件
    • 构建
    • 公众
      • 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配置,它将不再工作:

正在跟踪的依赖项/杏仁/杏仁错误:ENOENT,没有这样的文件或目录'C:''Users''Marco''Documents''Progetti''nodejs opt''bower_components''domready.js'在模块树中:../public/main

错误:错误:ENOENT,没有这样的文件或目录'C:''Users''Marco''Documents''Progetti''nodejs opt''bower_components''domready.js'在模块树中:../public/main

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

我希望DRY,避免两次添加依赖项。这可能吗?

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

如果您希望在构建时读取"主"JS文件配置,这样就不必在单独的配置中重复这些值,请将此属性设置为该主JS文件的位置。将使用在该文件中找到的第一个requirejs({})、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
})