Grunt require 未能按预期创建多个模块

Grunt require fails to create multiple modules as expected

我的结构如下:

注意vendor.js只是一个包含libs下所有文件的文件。例如

//vendor.js define(['jquery','bootstrap', 'moment'], function(){});

只是列出依赖项:

我想要做的是 运行 g运行t requirejs 命令创建一个 vendor.js 文件,其中包含 libs/ 下的所有文件和 app.js 以及未包含在 vendor.js.

中的其余文件

这是我的 requirejs 选项的样子:

module.exports = function (grunt) {
    'use strict';
    var config = {
        dist: {
            options: {
                appDir: 'app/',
                baseUrl: './scripts',
                mainConfigFile: 'app/scripts/main.js',
                dir: 'dist/scripts/',
                modules: [
                    { name: 'vendor'},
                    { name: 'app', exclude: ['vendor'] }
                ]
            }
        }
    };
    grunt.config('requirejs', config);
};

我从上面的运行中得到的是下面的build.txt

scripts/vendor.js
----------------
scripts/libs/jquery.js
scripts/libs/bootstrap.js
scripts/libs/moment.js
scripts/app.js
scripts/vendor.js
scripts/common.js
scripts/app.config.js

scripts/app.js
----------------

如您所见,所有文件都只是附加到 vendor.js 而不是 app.js。我希望 vendor.js 包含 vendor.js 及其依赖项。并且 app.js 包括其余部分,因为 vendor 被排除在外。

我试过很多组合,但还是不行。

找到问题了!问题出在我的 require 配置文件中,该文件提供给 grunt requirejs 任务。 require 配置文件有 deps: ['app'] 代码,在尝试拆分成模块时会发生冲突,因为一旦 require 配置被提供给 grunt requirejs 任务,它就会将 app 视为必要的依赖项,这意味着 app 及其所有文件被标记为依赖,因此包含在列出的第一个模块文件中。