配置webpack以允许浏览器调试

7gyucuyw  于 2023-08-06  发布在  Webpack
关注(0)|答案(6)|浏览(141)

我是Webpack的新手,我正在转换现有的Web应用程序来使用它。
我正在使用webpack来捆绑和缩小我的JS,这在部署时非常好,但是这使得在开发过程中调试非常具有挑战性。
通常我使用chrome的内置调试器来调试JS问题。(或Firefox上的Firebug)。然而,使用webpack,所有内容都被塞进一个文件中,使用这种机制进行调试变得具有挑战性。
有没有一种方法可以快速打开和关闭bundeling?或者打开和关闭缩小功能?
我已经看过了,看看是否有一些脚本加载器配置或其他设置,但它并没有出现ovious。
我还没有时间把所有的东西都转换成像一个模块和使用要求一样。所以我简单地使用require(“script!./file.js”)模式。

pkwftd7m

pkwftd7m1#

您可以使用source maps来保留源代码和捆绑/缩小的源代码之间的Map。
Webpack提供了devtool选项来增强开发人员工具中的调试,只需为您创建捆绑文件的源Map。这个选项可以在命令行中使用,也可以在 * webpack.config.js * 配置文件中使用。
下面是一个使用命令行生成捆绑文件(* bundle.js *)沿着生成的源Map文件(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!';
};


如果你在浏览器中打开 * index.html *(我使用Chrome,但我认为其他浏览器也支持它),你会在标签中看到 Sources,你在 file:// 方案下有捆绑文件,在特殊的 webpack:// 方案下有源文件。
x1c 0d1x的数据
是的,您可以像拥有原始源代码一样开始调试!尝试在一行中放置断点并刷新页面。


py49o6xq

py49o6xq2#

我认为最好使用生产和开发模式https://webpack.js.org/guides/production/来设置您的项目,它还包括如何将代码Map到调试
第一个月

voj3qocg

voj3qocg3#

正如已经指出的那样,源Map非常有用。
但有时选择使用哪个源Map可能是一件痛苦的事情。
对其中一个Webpack source map issue的注解可能有助于根据需求选择要使用的源Map。

j8ag8udp

j8ag8udp4#

Chrome在调试器中也有一个格式选项。它没有普通源文件的所有信息,但这是一个很好的开始,你也可以设置断点。您单击的按钮位于第一个屏幕快照的左下角,看起来像{}。
格式化前:x1c 0d1x的数据
格式化后。


ruarlubt

ruarlubt5#

看一看Here
它是一个美化器,缩小了JavaScript。在底部,它有一个浏览器的各种插件和扩展的列表,请查看它们。
您可能对FireFox Deminifier感兴趣,当它从服务器检索时,它应该对您的JavaScript进行定义和样式化。


的数据
(来源:mozilla.net

mwkjh3gx

mwkjh3gx6#

  • 当本地开发版本没有更改时,可以使用源Map,但如果您想在生产站点上测试本地包更改,则很难设置。
  • 如果你没有使用组件或捆绑包级别的代码分割,那么你可以使用像Requestly这样的Chrome扩展程序来将生产版本与本地版本交换。这里有一个这样的例子,你可以看到:maplocal feature

相关问题