1

我有这个目录结构:

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
 [..]

这很奇怪,因为那条路是正确的!

我找不到很多这样的例子,有人可以帮忙吗?

更新:

我只需要调整baseUrlGruntfile.js 中的appDir. requirejs 选项中的 baseUrl 现在与配置中的相同。

requirejs: {
          compile: {
            options: {          
              baseUrl: "static/app",
             /* modules : [
                {
                    name: "profile"

                },
                {
                    name: "frontpage"

                }
              ],*/
              mainConfigFile: "./static/app/config.js",
              optimize: "none",
              dir: "./static/build/"
            }
          }
        }
4

1 回答 1

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']);

};

配置.js

require.config(
{
  baseUrl:".",
  packages: [],
}
);
于 2015-05-05T23:38:23.713 回答