我正在尝试使用RequireJS
使用grunt-contrib-requirejs
插件优化GruntJS
。
问题是我的代码在优化之前工作正常,然后在优化之后,在控制台上显示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');
}
答案 0 :(得分:12)
将require.js文件添加为“include”选项应该有效。
requirejs: {
compile : {
options : {
name : 'main',
baseUrl : ".",
mainConfigFile : "./main.js",
out : "./optimized.js",
preserveLicenseComments: false,
include: ['path/to/require.js']
}
}
}
答案 1 :(得分:8)
由于define
是一个requireJs函数,您似乎错过了加载requireJs或任何其他AMD加载程序。如果你不需要加载任何其他AMD模块然后你的编译一次,你可以使用像almond这样的轻量级装载机垫片。
答案 2 :(得分:0)
正如缺少requirejs-script之前所指出的那样。
官方要求js-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
答案 3 :(得分:-1)
似乎grunt-contrib-requirejs默认情况下不会编译requirejs。您可以使用concat重新添加requirejs。
concat : {
dist : {
src : ['./optimized.js', 'path/to/requirejs.js'],
dest : './optimized.js'
},
}
grunt.loadNpmTasks('grunt-contrib-concat');