Использование 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. Это определенно вызовет проблемы.