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

「include」オプションとして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

requireJs関数と同様defineに、requireJsまたはその他のAMDローダーをロードできないようです。他のAMDモジュールをロードする必要がなく、一度準拠した場合は、アーモンドのような軽量ローダーシムを使用できます。

于 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"
    }
  }
},

オプションパスincludeを確認してください。これらは、require を定義するために不可欠です。requireLib-option を require.js-file に指定するだけです。

ここで公式の回答を参照してください: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 に答える