我的结构如下:
注意vendor.js只是一个包含libs下所有文件的文件。实施例
//vendor.js
define(['jquery','bootstrap', 'moment'], function(){});
只列出依赖项:
app.js
取决于common.js
和app.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
被排除在外。
我尝试了很多组合,但仍然是一个nogo。
答案 0 :(得分:1)
发现问题!问题在于我的require配置文件是grunt requirejs任务的源。 require配置文件有deps: ['app']
代码,在尝试拆分成模块时发生冲突,因为只要将require配置文件提供给grunt requirejs任务,它就会将app视为必要的依赖项,这意味着app及其所有文件被标记为依赖,因此包含在列出的第一个模块文件中。