grunt-contrib-requirejs
プラグインを使用して、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');
}
define
はrequireJs関数であるため、requireJsまたはその他のAMDローダーをロードできないようです。他のAMDモジュールをロードする必要がなく、一度コンパイルした場合は、 アーモンド のような軽量ローダーシムを使用できます。
「include」オプションとしてrequire.jsファイルを追加すると機能するはずです。
requirejs: {
compile : {
options : {
name : 'main',
baseUrl : ".",
mainConfigFile : "./main.js",
out : "./optimized.js",
preserveLicenseComments: false,
include: ['path/to/require.js']
}
}
}
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"
}
}
},
オプションpathsおよびincludeを確認します。これらは、次の要件を満たすために不可欠です。定義されます。 requireLib-optionをrequire.js-fileにポイントするだけです。
ここで公式の回答を参照してください: http://requirejs.org/docs/optimization.html#onejs