Использование AMDclean с ворчанием

Я пытаюсь построить проект с помощью requirejs и AMDClean, чтобы полностью убрать потребность в amd в рабочей версии. Хотя я могу заставить оптимизатор requirejs собрать свои файлы, я не могу удалить require/define из него с помощью amdclean. Вот мой код requirejs (написанный на grunt с использованием coffeescript):

requirejs:
      compile:
        options:
          baseUrl: './client'
          mainConfigFile: "client/main.js"
          name: 'main'
          out: 'build/main.js'

Здесь client/main.js является точкой входа в мое приложение. Я могу вызвать этот файл с помощью тега script:

<script src="client/vendor/require.js" data-main="build/main.js"></script>

Вот задача requirejs для ворчания с amdclean

fs = require 'fs'
amdclean = require 'amdclean'

module.exports = (grunt) ->
  'use strict'
  grunt.initConfig(

    #Read Package.json
    pkg: grunt.file.readJSON('package.json')

    #Build task
    requirejs:
      compile:
        options:
          baseUrl: './client'
          mainConfigFile: "client/main.js"
          name: 'main'
          out: 'build/main.js'
          onModuleBundleComplete: (data) ->
            outputFile = data.path
            fs.writeFileSync(outputFile, amdclean.clean(
              'filePath': 'client/main.js'
              'globalModules': []
              'wrap':
                'start': '(function(){\n',
                'end': '\n}());'
            ))

Я ожидаю, что смогу вызвать этот файл с помощью этого тега:

<script src="build/main.js"></script>

Что не происходит. Выдает ошибку, говорящую: models_MenuItem is not defined Какую ошибку я обычно получаю, когда модули загружены не в правильном порядке. Файл, созданный с помощью оптимизатора requirejs и исходного javascript перед сборкой, работает нормально. Пожалуйста, помогите мне исправить мою конфигурацию amdclean или определить, где на самом деле проблема.

1 ответ

Убедитесь, что установили ваш filePath Опция AMDclean правильно:

'filePath': outputFile

Также может быть несколько других причин:

Убедитесь, что для параметра Require.js skipModuleInsertion установлено значение true. По умолчанию Require.js создает define() обертка для файлов, которые не обернуты в define(), Это может вызвать проблемы с AMDclean.

Убедитесь, что вы не указываете на минимизированные файлы при сборке с AMDclean. Это определенно вызовет проблемы.

Другие вопросы по тегам