Skonfiguruj pakiet internetowy, aby umożliwić debugowanie przeglądarki

134

Jestem nowym użytkownikiem pakietu webpack i konwertuję istniejącą aplikację internetową, aby z niej korzystać.

Używam pakietu webpack do pakowania i minimalizowania mojego JS, który jest świetny po wdrożeniu, jednak sprawia to, że debugowanie podczas programowania jest bardzo trudne.

Zazwyczaj używam wbudowanego debuggera Chrome'a ​​do debugowania problemów z JS. (Lub Firebug w przeglądarce Firefox). Jednak w przypadku pakietu webpack wszystko jest upchane w jednym pliku i debugowanie przy użyciu tego mechanizmu staje się trudne.

Czy istnieje sposób, aby szybko włączyć i wyłączyć pakietowanie? lub włączać i wyłączać minifikację?

Sprawdziłem, czy jest jakaś konfiguracja programu ładującego skrypt lub inne ustawienie, ale nie wydaje się to jawne.

Nie miałem jeszcze czasu na przekonwertowanie wszystkiego, aby działało jak moduł i wymaga użycia. Więc po prostu używam wzorca require ("skrypt! ./ plik.js") do mojego ładowania.

Jim
źródło
3
Czy w końcu znalazłeś rozwiązanie tego problemu? Wolę też używać konsoli JS do przeglądania dostępnych zmiennych. Moim głównym problemem jest to, że webpack ukrywa wszystkie te zmienne wewnątrz modułu, więc stają się niedostępne
user1496984
2
Nigdy tak naprawdę nie znalazłem rozwiązania, więc niestety przestaliśmy używać webpacka.
Jim
Czego teraz używasz? W momencie pisania webpacka nadal wydaje się być najpopularniejszym narzędziem do budowania, jakie mogę znaleźć.
Richard

Odpowiedzi:

102

Możesz użyć map źródłowych, aby zachować mapowanie między kodem źródłowym a pakietem / zminimalizowanym.

Pakiet Webpack udostępnia opcję devtool , która usprawnia debugowanie w narzędziu programistycznym, po prostu tworząc mapę źródłową dołączonego pliku. Tej opcji można użyć z wiersza poleceń lub w pliku konfiguracyjnym webpack.config.js .

Poniżej znajduje się wymyślony przykład użycia wiersza poleceń do wygenerowania pliku pakietu ( bundle.js ) wraz z wygenerowanym plikiem mapy źródłowej ( bundle.js.map ).

$ webpack --devtool source-map ./entry.js bundle.js
Hash: b13b8d9e3292806f8563
Version: webpack 1.12.2
Time: 90ms
        Asset     Size  Chunks             Chunk Names
    bundle.js  1.74 kB       0  [emitted]  main
bundle.js.map  1.89 kB       0  [emitted]  main
   [0] ./entry.js 85 bytes {0} [built]
   [1] ./hello.js 59 bytes {0} [built]

index.html

<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <script src="bundle.js"></script>
  </body>
</html>

entry.js

var hello = require('./hello.js');
document.body.innerHTML += 'It works ' + hello();

hello.js

module.exports = function () {
  return 'Hello world!';
};

Jeśli otworzysz index.html w swojej przeglądarce (ja używam Chrome, ale myślę, że jest również obsługiwana w innych przeglądarkach), zobaczysz w zakładce Źródła , że masz dołączony plik pod schematem file: // a pliki źródłowe pod specjalny schemat webpack: // .

debuguj za pomocą map źródłowych

I tak, możesz rozpocząć debugowanie tak, jakbyś miał oryginalny kod źródłowy! Spróbuj umieścić punkt przerwania w jednej linii i odświeżyć stronę.

punkt przerwania z mapami źródłowymi

dreyescat
źródło
2
bundle.map wskazuje na plik js, ale co, jeśli rzeczywisty plik js ma również mapę, która pozwala powiedzieć tsx lub ts?
Andrej Kovacik
5

Myślę, że lepiej jest skonfigurować projekt w trybie produkcyjnym i programistycznym https://webpack.js.org/guides/production/ Obejmuje również sposób mapowania kodu do debugowania

devtool: 'inline-source-map'

m-farhan
źródło
2

Chrome ma również opcję formatowania w debugerze. Nie zawiera wszystkich informacji, które miałby normalny plik źródłowy, ale to świetny początek, możesz również ustawić punkty przerwania. Kliknięty przycisk znajduje się w lewym dolnym rogu pierwszego zrzutu ekranu, wygląda jak {}.

Przed formatowaniem: wprowadź opis obrazu tutaj

Po sformatowaniu.

wprowadź opis obrazu tutaj

Jolly1234
źródło
1

Zajrzyj tutaj

to upiększacz, który osłabia javascript. na dole znajduje się lista różnych wtyczek i rozszerzeń do przeglądarek, sprawdź je.

możesz być zainteresowany Deminifikatorem FireFox , jego zadaniem jest deminifikacja i stylizacja twojego javascript, gdy jest pobierany z serwera.

wprowadź opis obrazu tutaj

Banan
źródło
11
deminifikacja to nie to samo, co wyłączenie minifikacji, ponieważ komentarze są nadal usuwane, numery wierszy nie są już zgodne, a nazwy zmiennych nie są takie same. Biorąc to pod uwagę, lepiej niż nic.
Jim