我有这个目录结构:
webapp
├──static
│ ├── app
│ ├── config.js
│ ├── frontpage.js
│ ├── profile.js
│ └── utils.js
Gruntfile.js
我正在尝试使用grunt-contrib-requirejs来优化profile
和frontpage
的依赖关系。现在我的config.js看起来像:
require.config({
{
baseUrl:"/static/app",
shim: {
bootstrap : { "deps" :['jquery'] } ,
velocity : { "deps" : ['jquery']}
},
paths: {
jquery: "../bower_components/jquery/dist/jquery.min",
bootstrap : "//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min",
requirejs: "../bower_components/requirejs/require",
handlebars: "../bower_components/handlebars/handlebars.min",
velocity: "../bower_components/velocity/velocity.min"
},
packages: []
});
我为grunt-require-config
尝试了以下配置requirejs: {
compile: {
options: {
appDir: "static/app",
modules : [
{
name: "profile"
}
],
mainConfigFile: "./static/app/config.js",
optimize: "none",
dir: "./static/build/"
}
}
}
但是我收到了这个错误:
Running "requirejs:compile" (requirejs) task
{ [Error: Error: ERROR: module path does not exist: /static/app/profile.js for module named: profile. Path is relative to: /webapp
[..]
这很奇怪,因为那条路是正确的!
我找不到很多这方面的例子,有人可以帮忙吗?
更新
我只需要调整Gruntfile.js中的baseUrl
,然后删除appDir
。 requirejs选项中的baseUrl现在与config中的相同。
requirejs: {
compile: {
options: {
baseUrl: "static/app",
/* modules : [
{
name: "profile"
},
{
name: "frontpage"
}
],*/
mainConfigFile: "./static/app/config.js",
optimize: "none",
dir: "./static/build/"
}
}
}
答案 0 :(得分:0)
因为你的config.js和profile.js具有相同的路径,你的baseUrl在配置中是错误的。
我在我的机器上测试了这个配置并且正在运行。
Gruntfile.js
module.exports = function(grunt) {
grunt.initConfig({
requirejs: {
compile: {
options: {
appDir: "webapp/static/app",
modules : [
{
name: "profile"
}
],
mainConfigFile: "webapp/static/app/config.js",
optimize: "none",
dir: "./dist/"
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-requirejs');
grunt.registerTask('default', ['requirejs']);
};
config.js
require.config(
{
baseUrl:".",
packages: [],
}
);