14

我正在尝试RequireJS使用插件GruntJS进行优化。grunt-contrib-requirejs

问题是我的代码在优化之前运行良好,然后在优化之后,在控制台上显示Uncaught ReferenceError: define is not defined.

这是Gruntfile.js

module.exports = function (grunt) {
  grunt.loadNpmTasks('grunt-contrib-requirejs');

  grunt.initConfig({
    requirejs: {
        compile : {
            options : {
              name  : 'main',
              baseUrl : ".",
              mainConfigFile : "./main.js",
              out : "./optimized.js",
              preserveLicenseComments: false
           }
        }
}
  })

  grunt.registerTask('default', 'requirejs');

}
4

4 回答 4

12

将 require.js 文件添加为“包含”选项应该可以工作。

requirejs: {
    compile : {
        options : {
            name  : 'main',
            baseUrl : ".",
            mainConfigFile : "./main.js",
            out : "./optimized.js",
            preserveLicenseComments: false,
            include: ['path/to/require.js']
        }
    }
}
于 2013-12-14T03:24:17.843 回答
8

作为define一个 requireJs 函数,您似乎错过了加载 requireJs 或任何其他 AMD 加载程序。如果您不需要加载任何其他 AMD 模块,那么您只需编译一次,您可以使用像almond这样的轻型加载器垫片。

于 2013-03-09T09:13:35.357 回答
0

正如在缺少 requirejs-script 之前指出的那样。

这是官方 requirejs-page建议您这样做的方式(从我的 gruntfile 中提取):

requirejs: {
  compile: {
    options: {
      baseUrl: "src/js",
      mainConfigFile: 'src/js/require.config.js', 
      paths: {
        requireLib: "vendor/require/require"
      },
      include: "requireLib",
      name: "require.config",
      out: "dist/js/bundle.js"
    }
  }
},

观察选项路径包含,这些对于定义需求至关重要。只需将 requireLib 选项指向您的 require.js 文件。

在此处查看官方答案:http ://requirejs.org/docs/optimization.html#onejs

于 2016-09-30T13:55:47.327 回答
-1

似乎 grunt-contrib-requirejs 默认不编译 requirejs 。您可以使用 concat 重新添加 requirejs。

concat : {
  dist : {
    src : ['./optimized.js', 'path/to/requirejs.js'],
    dest : './optimized.js'
  },
}

grunt.loadNpmTasks('grunt-contrib-concat');
于 2013-12-13T09:39:05.277 回答