Компилятор закрытия Google с ADVANCED_OPTIMIZATIONS, который дает мне пустой файл - PullRequest
0 голосов
/ 26 ноября 2018

Команда, которую я использую:

java -jar closure-compiler-v20181028.jar --compilation_level ADVANCED_OPTIMIZATIONS --js_output_file=out.js input.js

мой input.js содержит только

function base() {
    var b='xyz';
                if (b.tagName && 0 == b.tagName.search(this.TAGS_)) {
                    if (b.hasAttribute("href") && void 0 !== self.angular) {
                        var f = b.getAttribute("href");
                        if (f.indexOf("{{") >= 0 && f.indexOf("}}") > 0 && !b.hasAttribute("ng-href"))
                            return b.setAttribute("ng-href", f), void b.removeAttribute("href");
                    }
                    for (var a = 0; a < this.URL_ATTRIBUTES_.length; ++a)
                        if (b.hasAttribute(this.URL_ATTRIBUTES_[a]))
                            return this.updateAttributes_(b, a);
                }
            }

Я пробовал с помощью скрипта gradle, также тот же результат. Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Из документации:

"... код, скомпилированный с помощью ADVANCED_OPTIMIZATIONS, может не работать с некомпилированным кодом, если вы не предпримете особые шаги для обеспечения совместимости. Если вы не помечаете внешние функции и свойства, на которые есть ссылки в вашем коде,Закрытие Компилятор будет неправильно переименовывать ссылки в вашем коде, вызывая несоответствия между именами в вашем коде и во внешнем коде. "

Здесь под" флагом "они подразумевают" экспорт ".Для получения дополнительной информации см. Эту документацию по различным уровням компиляции:

https://developers.google.com/closure/compiler/docs/compilation_levels

Этот пост в блоге:

http://closuretools.blogspot.com/2012/09/which-compilation-level-is-right-for-me.html

И документация поэкспорт здесь:

https://developers.google.com/closure/compiler/docs/api-tutorial3

0 голосов
/ 28 ноября 2018

Если вы не позвоните base(), код будет удален, поскольку он недоступен.

Вы можете либо позвонить ему, либо добавить нотацию @export, чтобы сообщить Closure, что он нужендругой код.

Кроме того, если что-то вызывает base(), оно может быть неправильно включено в вашу сборку.

...