6

我的结构如下:

  • 应用程序
    • 脚本
        • jQuery.js
        • 引导程序.js
        • 时刻.js
      • 应用程序.js
      • 供应商.js
      • common.js
      • app.config.js
      • main.js #需要配置

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

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

只是列出依赖项:

  • app.js取决于common.jsapp.config.js
  • common.js取决于vendor.js
  • app.config.js取决于moment.js

我想要做的是运行 grunt 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被排除在外。

我已经尝试了很多组合,但这里仍然没有。

4

1 回答 1

1

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

于 2017-04-04T19:57:42.400 回答