Определение grunt requirejs 'undefined' - программирование
Подтвердить что ты не робот

Определение grunt requirejs 'undefined'

Я пытаюсь оптимизировать 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');

}
4b9b3361

Ответ 1

Поскольку define является функцией requireJs, кажется, вы не можете загрузить requireJs или любой другой загрузчик AMD. Если вам не нужно загружать какой-либо другой модуль AMD, тогда вы выполнили один раз, вы можете использовать легкий манипулятор загрузки, например almond.

Ответ 2

Добавление файла require.js в качестве опции "включить" должно работать.

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

Ответ 3

Как указано выше, не требуется requirejs- script.

Это означает, что официальная официальная requirejs-страница предлагает вам сделать это (разорвана из моего файла grunt):

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, которые необходимы для определения необходимости. Просто укажите параметр requireLib для вашего файла require.js.

См. официальный ответ здесь: http://requirejs.org/docs/optimization.html#onejs

Ответ 4

Кажется, что grunt-contrib-requirejs не компилирует requirejs по умолчанию. Вы можете использовать concat для повторного добавления requirejs.

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

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