为什么我的咕噜声
我正在尝试用grunt-contrib-requirejs任务启动并运行。
作为RequireJS的新手,从未使用优化器/ r.js,我真的很困惑如何让这个工作。
首先,我设置了一个简单的目录结构,如下所示:
root
├── js
│ ├── helper
│ │ ├── a.js
│ │ ├── b.js
│ │ └── d-dep.js
│ └── main.js
├── node_modules
│ └── [dependencies from package.json]
├── Gruntfile.js
└── package.json
我已经在浏览器中测试过它,并且所有依赖项都在那里正确加载。
我的Gruntfile:
module.exports = function(grunt) {
grunt.config.init({
requirejs: {
options: {
baseUrl: 'js/',
mainConfigFile: 'js/main.js',
dir: 'target/',
keepBuildDir: true
}
}
});
require('load-grunt-tasks')(grunt);
}
main.js:
require(["helper/a", "helper/b"], function(util) {
console.log('main.js loaded');
});
a.js
console.log('a.js loaded');
b.js
define(['js/helper/b-dep.js'], function(bdep) {
console.log('b.js loaded');
});
B-dep.js
console.log('b.js dependency loaded');
当运行grunt requirejs
,我得到一个Done, without errors.
消息,但看不到任何优化文件 - 我猜错误是在Gruntfile中,可能是路径。
你看到有什么打击你吗? 为什么没有优化,虽然它说Done, without errors.
?
你似乎没有告诉它优化一些东西。 你应该设置一个name
选项来告诉它主模块是什么。 此外,您在配置中丢失了一个级别的配置,您将传递给grunt。 options
对象必须位于更具体的目标中,如compile
:
requirejs: {
compile: { // <<== nest the options in this.
options: {
baseUrl: 'js/',
mainConfigFile: 'js/main.js',
name : 'main', // <<=== add this
dir: 'target/',
keepBuildDir: true
}
}
}
设置mainConfigFile
是不够的,因为这只会告诉优化器应该从何处获取运行时配置。 它不会告诉优化器该文件是一个模块。 请注意, name
缺少.js
扩展name
并不是错误。 您应该避免在模块名称中使用扩展名,除非有特定的原因需要扩展名。 name
与baseUrl
相关,所以这就是为什么它是'main'
而不是'js/main'
。
检查我的配置,这是我用来创建一个名为all.js
的文件
requirejs : {
dist : {
options : {
waitSeconds : 0,
baseUrl : "./app/",
name : 'assets/js/main',
mainConfigFile: 'app/assets/js/main.js',
out : "dist/assets/js/all.js",
optimize : "uglify2",
inlineText : true,
findNestedDependencies : true,
paths : {
requireLib : "assets/bower_components/requirejs/require",
},
include : [
"requireLib"
]
}
}
}
链接地址: http://www.djcxy.com/p/93639.html
上一篇: Why does my grunt