Одной обфускации мало. Можно ли завязаться на какие-то более хитрые вещи, которые помогают отличить запущен твой скрипт браузером "оригинально", прикручено к нему какое-то дополнение, исходник изменён или он в какой-то другой среде?
В принципе, можно провязать всю логику скрипта какими-то непонятными юзеру вычислениями с перестановками ссылок в длинных массивах, чтобы эти вычисления 90% работы делали для пыли в глаза, но побочно инициализировали некие ключевые связи в обфусцированном коде. При несовпадении какой-нибудь фигни весь этот объём вычислений проходит как обычно, но оставляет конструкцию в нерабочем виде.
Ну можно радикально - взять LLVM, написать всё на C++ и поставлять машинный код, исполняющийся в asm.js и там ещё навернуть пирогов в 10 слоёв с дополнительными подгрузками кусков с главного сервера. Но всё это будет слишком жестоко, дорого и тормозно.
2 мегабайт мелко нашинкованного ява-скрипта вы уверены что это недостаточно сложно? Лично я нет. И да в итоге человек будет знать как работает приложение, что это ему даст?
Реакция на UI или пути доступа к api.
Твой код js никому ненужен. Есть более крутые и красивые вещи, уже, и в бесплатном доступе, демонстрирующие превосходное исполнение. Ты спросишь, с чего я это взял? Да с того, что если бы твой код имел хоть какую-то ценнось, значимость и интерес, ты бы сам его продемонстрировал. Мол смотрите как я умею и как круто получается. Ну, а пока что, ты просто хочешь спрятать свой говнокод.
После компиляции вебпаком код перевернут покруче обфускации на порядок, вам достаточно использовать нестандартные конфиги вебпака и отключить соурс мапы для продакшена