2015-08-30 9 views
2

У меня есть несколько декораторов, таких как @timer, @checkOptimizations и т. Д. Я пытаюсь выяснить, как их удалить в процессе производства. Пример класс:Любые идеи о том, как удалить декоратор ES7?

class Foo { 
    @timer 
    bar() { 
    } 
} 

Теперь я могу сделать их не функцию довольно легко заменяя декоратор с функцией не-оп. Но сгенерированный код довольно тяжелый (базовый класс - 1640 байт без сжатия и 353 без декоратора).

+0

Реализовать плагин для transpiler вы используете, так что удалили узел перед его переводом. – zerkms

+0

@zerkms - Хорошо, любые идеи о допустимом синтаксисе для обозначения декоратора как мертвого кода? Я бы предпочел не изобретать что-то :) –

+0

Сделайте это своим параметром плагина, чтобы удалить все '@ timer'. В противном случае я не могу придумать что-то, что не так страшно, как явный комментарий прямо перед декоратором, например: '// dead code decorator' ;-D – zerkms

ответ

0

Я создал плагин для решения этой проблемы. Он удаляет все декораторов, прежде чем переводить код. Мы используем его, когда хотим выполнить модульный тест нашего кода, поскольку мы не хотим, чтобы декоратор применялся к «единице» в тесте (т. Е. Классу).

Здесь: https://github.com/vladpalos/babel-plugin-remove-decorators

Если вы хотите удалить только некоторые декораторы, вы можете захотеть использовать этот один: https://github.com/elierotenberg/babel-plugin-strip-decorator

 Смежные вопросы

  • Нет связанных вопросов^_^