Можно ли unminify js после webpack сжатия?
Столкнулся с такой проблемой, удалил сборку проекта (безвозвратно), остался сжатый, я так понимаю, через webpack файл, можно ли его привести к читаемому виду?
Сборщик gulp
сама таска на сжатие и в целом на js выглядит так:
import webpack from 'webpack-stream';
export const js = () => {
return app.gulp.src(app.path.src.js, { sourcemaps: app.isDev })
.pipe(app.plugins.plumber(
app.plugins.notify.onError({
title: 'JS',
message: 'Erorr: <%= error.message %>'
}))
)
.pipe(webpack({
mode: app.isBuild ? 'production' : 'development',
output: {
filename: 'app.min.js',
}
}))
.pipe(app.gulp.dest(app.path.build.js))
.pipe(app.plugins.browsersync.stream());
}
Сжатый js файл приложил ниже, я пытался через unminify.js и какой-то webpack plugin unminify, на выходе картина не лучше :( По сути нужна строчка которая начинается "eval("webpack_require.r(webpack_exports);...." Как-то можно её очистить от ненужных символов и привести к красивому виду? (ограничение по символами не пропускало, немного сократил файл)
/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./src/js/app.js":
/*!***********************!*\
!*** ./src/js/app.js ***!
\***********************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n// import * as flsFunctions from './modules/functions.js';\r\n\r\n// flsFunctions.isWebp();\r\n\r\n\r\n// Custom JS\r\n// input mask\r\n// $(\"[name=PHONE]\").inputmask('+9 (999) 999-99-99');\r\n// $('[name=\"EMAIL\"]').inputmask({\r\n// mask: \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\",\r\n// greedy: !1,\r\n// onBeforePaste: function(pastedValue, opts) {\r\n// pastedValue = pastedValue.toLowerCase();\r\n// return pastedValue.replace(\"mailto:\", \"\");\r\n// },\r\n// definitions: {\r\n// '*': {\r\n// validator: \"[0-9A-Za-z!#$%&'*+/=?^_`{|}~\\-]\",\r\n// cardinality: 1,\r\n// casing: \"lower\"\r\n// },\r\n// \"-\": {\r\n// validator: \"[0-9A-Za-z-]\",\r\n// cardinality: 1,\r\n// casing: \"lower\"\r\n// }\r\n// }\r\n// });\r\n\r\n// избегание дергания при открытии окна\r\n// function calcScroll() {\r\n// let div = document.createElement('div');\r\n\r\n// div.style.width = '50px';\r\n// div.style.height = '50px';\r\n// div.style.overflowY = 'scroll';\r\n// div.style.visibility = 'hidden';\r\n\r\n// document.body.appendChild(div);\r\n// let scrollWidth = div.offsetWidth - div.clientWidth;\r\n// div.remove();\r\n\r\n// return scrollWidth;\r\n// }\r\n\r\n\r\n// Smooth SCROLL\r\ngsap.registerPlugin(ScrollTrigger);\r\n\r\nconst scroller = document.querySelector('.scroller');\r\nconst bodyScrollBar = Scrollbar.init(scroller, { damping: 0.05, delegateTo: document, alwaysShowTracks: true });\r\nlet bodyScroll;\r\n\r\nScrollTrigger.scrollerProxy('.scroller', {\r\n scrollTop(value) {\r\n if (arguments.length) {\r\n bodyScrollBar.scrollTop = value;\r\n }\r\n return bodyScrollBar.scrollTop;\r\n }\r\n});\r\nbodyScrollBar.addListener(function() {\r\n bodyScroll = this.offset.y\r\n});\r\n\r\nbodyScrollBar.addListener(ScrollTrigger.update);\r\nScrollTrigger.defaults({ scroller: scroller });\r\n\r\nconst windowWidth = window.innerWidth;\r\nconst windowHeight = window.innerHeight;\r\n\r\nconst isMobile = windowWidth <= 768;\r\n\r\n\r\n// swiper sliders\r\nif($('.s-quality .sqi-slider .swiper-container').length > 0) {\r\n\tconst swiperProjects = new Swiper('.s-quality .sqi-slider .swiper-container', {\r\n\t slidesPerView: 'auto',\r\n\t spaceBetween: 0,\r\n\t speed: 800,\r\n\t navigation: {\r\n\t nextEl: '.s-quality .sqi-slider .swiper-button-next',\r\n\t prevEl: '.s-quality .sqi-slider .swiper-button-prev',\r\n\t },\r\n\t});\r\n\r\n\tswiperProjects.on('slideChange', () => {\r\n\t\t$('.s-quality .sqi-theme-slider .sqi-theme').removeClass('active').eq(swiperProjects.realIndex).addClass('active');\r\n\t\t$('.s-quality .sqi-num-slider .sqi-num').removeClass('active').eq(swiperProjects.realIndex).addClass('active');\r\n\t});\r\n}\r\n\r\nif($('.s-exp .se-slider .swiper-container').length > 0) {\r\n\tconst swiperProjects = new Swiper('.s-exp .se-slider .swiper-container', {\r\n\t slidesPerView: 'auto',\r\n\t spaceBetween: 43,\r\n\t speed: 800,\r\n\t breakpoints: {\r\n\t \t992: {\r\n\t \t\tspaceBetween: 10,\r\n\t \t}\r\n\t }\r\n\t});\r\n}\r\n\r\nif($('.s-vacancy .sv-top .svt-slider .swiper-container').length > 0) {\r\n\tconst swiperProjects = new Swiper('.s-vacancy .sv-top .svt-slider .swiper-container', {\r\n\t slidesPerView: 'auto',\r\n\t spaceBetween: 4,\r\n\t speed: 800,\r\n\t});\r\n\t resizeCanvas();\r\n }\r\n}); \n\n//# sourceURL=webpack://gulp2022/./src/js/app.js?");
Источник: Stack Overflow на русском