Я пытаюсь скомпилировать два файла js --- main.js и cookies.js -- в один файл.
-/
|-main.js
|-cookie.js
|-require.js
|-main-built.js
|-build.js
main.js содержит логику скрипта и зависит/требует cookie.js.
Без require.js, если я сначала загружаю cookie.js, а затем main.js, все работает отлично. то есть:
<script src="cookie.js"></script>
<script src="main.js"></script>
Это отлично работает для разработки, но мне нужен один окончательный файл js для производства.
Я начал использовать require.js (http://requirejs.org/)
<script data-main="main-built.js" src="require.js"></script>
где main-built.js — результат работы одного файла:
node r.js -o build.js
Мой файл сборки настроен следующим образом:
({
include: ["cookiejs","requirejs"],
baseUrl: '.',
paths: {
'cookiejs': 'cookie',
'requirejs': 'require'
},
name:"main",
out: "main-built.js",
})
«main» из файла сборки извлекает main.js, «require» извлекает из require.js, «cookie» извлекает из cookie.js.
Проблема При выполнении окончательного скомпилированного файла функции cookie не определены. В частности, поскольку cookie.js обрабатывает взаимодействие с файлами cookie, возникает ошибка:
"Uncaught ReferenceError: cookie is not defined"
Я вижу, что код cookie.js на самом деле копируется в main-built.js, поэтому я думаю, что вопрос в том, как сообщить require.js, что main.js зависит от cookie.js, и заставить компилятор переупорядочить выполнение кода. в финальном файле основной сборки, но на самом деле я хватаюсь за соломинку, как сообщить require.js, как это сделать.
Что я пробовал
Включая и исключая require.js в файле сборки и не видел никакой разницы.
Использование "deps" вместо "include" в файле сборки --- разницы не заметил
Различные варианты сборки uglify