Grunt require 未能按预期创建多个模块
Grunt require fails to create multiple modules as expected
我的结构如下:
- 应用程序
- 脚本
- 库
- jquery.js
- bootstrap.js
- moment.js
- app.js
- vendor.js
- common.js
- app.config.js
- main.js #需要配置
注意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
我想要做的是 运行 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 及其所有文件被标记为依赖,因此包含在列出的第一个模块文件中。
我的结构如下:
- 应用程序
- 脚本
- 库
- jquery.js
- bootstrap.js
- moment.js
- app.js
- vendor.js
- common.js
- app.config.js
- main.js #需要配置
- 库
- 脚本
注意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
我想要做的是 运行 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 及其所有文件被标记为依赖,因此包含在列出的第一个模块文件中。