2013-03-06 23 views
14

grunt-contrib-requirejsプラグインを使用してGruntJSを使用して最適化しようとしています。grunt requirejs '定義が未定義です'

問題は私のコードが最適化されてから最適化された後、コンソール上でUncaught ReferenceError: define is not definedと表示されるという問題です。

ここdefineとして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

あなたには、コンパイル済みのファイルを読み込む使用方法は? 'define'はrequireJs関数なので、requireJsをロードするのは間違いです。 –

+0

それは 'requirejs'が含まれていなかったからです。一度ロードしてもエラーは発生しません。 –

+1

okでも答えとして追加されます。 –

答えて

8

だがrequireJs機能である、あなたがrequireJsまたは任意の他のAMDローダーをロードするために欠場ようです。他のAMDモジュールをロードする必要がない場合は、一度準拠してください。almondのような軽量ローダーシムを使用できます。

-1

grunt-contrib-requirejsは、デフォルトでrequirejsをコンパイルしないようです。 concatを使用して、requirejsを再度追加することができます。

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

grunt.loadNpmTasks('grunt-contrib-concat'); 
12

"include"オプションとしてrequire.jsファイルを追加すると効果があります。

requirejs: { 
    compile : { 
     options : { 
      name : 'main', 
      baseUrl : ".", 
      mainConfigFile : "./main.js", 
      out : "./optimized.js", 
      preserveLicenseComments: false, 
      include: ['path/to/require.js'] 
     } 
    } 
} 
+1

私は同様の問題を抱えていますが、出力にrequirejsを追加するだけではありませんか?オプティマイザを通過するようなことはありません。 – hybrid9

+0

はい、RequireJSを出力に追加します。これは簡単な解決策ですが、小型化されたスクリプト(受け入れられた回答を参照)でより小さなAMDローダーを使用する方が理想的です。 –

0

requirejs-scriptが欠落する前に指摘したとおりです。

これは公式requirejs-ページは、あなたが(私の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