Могу ли я использовать Google Closure только для объединения файлов JavaScript?

Недавно в мои руки попал проект. Он использует Google Closure для компиляции нескольких файлов JS в один final.js. Иногда мне нужно отлаживать final.js в браузере, но проблема в том, что Closure всегда сжимает код JavaScript с помощью укороченных имен функций и переменных. Поэтому я не могу правильно отлаживать final.js в браузере.

Мой вопрос: есть ли способ использовать Google Closure, чтобы просто объединить файлы JS без сжатия?

Ответом могут быть некоторые опции CLI или даже взлом исходного кода.

PS. Я пробовал --formatting PRETTY_PRINT, но окончательный код все равно сжимался.


person user2793120    schedule 16.07.2014    source источник
comment
возможный дубликат stackoverflow.com/questions/3198915/   -  person Chad Killingsworth    schedule 16.07.2014


Ответы (2)


WHITESPACE_ONLY и PRETTY_PRINT довольно близки, но не существует только режима «concat». У компилятора есть возможность создавать «выходные пакеты», но они не отображаются в командной строке:

https://github.com/google/closure-compiler/blob/52ae79693589834930cbfc01fe78f4efa8f6c518/src/com/google/javascript/jscomp/AbstractCommandLineRunner.java#L1966

person John    schedule 17.07.2014
comment
Проблема с WHITESPACE_ONLY заключается в том, что он не объединяет файлы в правильном порядке, обращая внимание на goog.require(). Что нам действительно нужно, так это способ объединить файлы, оставив их неминифицированными. Это позволяет проводить отладку до того, как мы минифицируем ее для производства. - person Ari Maniatis; 18.07.2014
comment
Если режим «только пробелы» не упорядочивает вещи должным образом, отправьте сообщение о проблеме, поскольку он должен быть упорядочен, если используются параметры зависимости. Вы можете подать заявку здесь: github.com/google/closure-compiler/issues/new< /а> - person John; 18.07.2014
comment
Проект отклонил нашу проблему, заявив, что whitespace_only не должен упорядочивать вещи или поддержка goog.require(). - person Ari Maniatis; 25.08.2014
comment
Вы не ответили на более поздние комментарии. - person John; 25.08.2014

Для этого лучше просто написать пакетный файл или bash-скрипт. что-то вроде этого должно работать для того, что вы хотите:

@echo off
setlocal enabledelayedexpansion
del output.js
set argCount=0
for %%x in (%*) do (
   set /A argCount+=1
   set "argVec[!argCount!]=%%~x"
)
for /L %%i in (1,1,%argCount%) do ( 
    type !argVec[%%i]! >> output.js
    echo. >> output.js
)

использование

joinjs file1.js file2.js file3.js ...
person dss    schedule 25.07.2014
comment
Это не будет делать то же самое, особенно в отношении правильного упорядочивания файлов и goog.require(). - person Ari Maniatis; 25.08.2014