找不到使用requirejs进行优化的方法和grunt以下内容:

时间:2015-05-05 22:40:47

标签: gruntjs grunt-contrib-requirejs

我有这个目录结构:

webapp     
  ├──static
  │   ├── app
  │        ├── config.js
  │        ├── frontpage.js
  │        ├── profile.js
  │        └── utils.js
Gruntfile.js

我正在尝试使用grunt-contrib-requirejs来优化profilefrontpage的依赖关系。现在我的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/"
            }
          }
        }

1 个答案:

答案 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: [],
}
);