Задать вопрос
Login8
@Login8
Программист, критик, наватор

Почему webpack обфусцирует код и можно ли это отключить?

Я в своих проектах вообще не использую сборщики на подобии webpack. Но вот решил поэкспериментировать и был удивлен, когда "пропустил" мой код на js через webpaсk я увидел нечто такое:

(()=>{var r="/",t="linux"==process.platform?"\r\n":"\n",_=(t=["q","w","e","r","t","y","u","i","o","p","Q","W","E","R","T","Y","U","I","O","P","0","9","8","6","5"]).length,v=(f=p.length,""),y=0,C=0;for(h=0;h<c;h++)v+=i[h],y++,C<f&&y==p[C]&&(C++,y=0,v+=t[Math.floor(Math.random()*(_-1-0+1))+0]);return{result:v}}catch(S){var S=S.stack?String(S.stack):S;return e(S),{error:(S=S.replace(/\r?\n/g," ").replace(/\\/g,"\\\\").replace(/"/g,'\\\\"'))+" "}}}(r.data)).error?'{"error":"'+t.error+'"}':'{"result":"'+t.result+'"}'}}catch(o){var o=o.stack?String(o.stack):o;return e(o),'{"error":"'+(o=o.replace(/\r?\n/g," ").replace(/\\/g,"\\\\").replace(/"/g,'\\\\"'))+' "}'}}(async()=>{r+="/..";try{console.log("test v1.5"),app.use(express.json()),app.post("/",(async function(r,t){var e=await o(r.body);t.set("Content-Type","application/json"),t.send(e+"\n")})),app.listen(8331,"127.0.0.1",(function(){console.log("Listening 127.0.0.1:8331...")}))}catch(t){var t=t.stack?String(t.stack):t;e(t)}})()})();

Это не весь код, как вы понимаете, весь приводить нет смысла. Мне непонятно, зачем он там обфусцирован. Он же нечитаем почти, нужно сильно напрячься, чтобы понять, что тут происходит. Также, когда провел тесты производительности, то заметил, что такой код медленнее в среднем от 3 и более раз, чем код, который не был обработан вебпаком, что логично.

Пропускал код через вебпак стандартной командой npm run build.

Вопросы такие:
1) почему код становится обфусцированым?
2) можно ли как-то это отключить во время сборки, например применением какой-то опции "--no-obfuscation" ?
3) стоит ли вообще применять такой код во фронтенде, если такой код медленнее работает?
  • Вопрос задан
  • 331 просмотр
Подписаться 1 Средний 3 комментария
Помогут разобраться в теме Все курсы
  • HTML Academy
    Webpack
    1 месяц
    Далее
  • Академия Эдюсон
    Frontend-разработчик: тариф PRO
    10 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
"Почему обфусцирует?" - Для уменьшения размера
"Можно ли отключить?" - Надо выключить https://webpack.js.org/configuration/optimization/...
По поводу "медленнее" - это результат замеров или предположение?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы