首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端面试官: 你知道source-map的原理是什么吗?

---- 介绍 webpack的source-map原理 ---- 为什么要有source-map 答:因为目前我们开发时候的源码跟通过webpack构建混淆压缩后的生产环境部署的代码不一样,sourceMap...---- source-map,怎么来的 ?它在哪儿?...答:通过webpack等工具,我们可以使用 sourceMap,它跟构建后的文件同在一个目录下~ ---- source-map,它怎么用?...⚠️:在webpack配置中设置devtool: 'none',那么就会关闭source-map ---- development模式会自动开启source-map,是为了让我们方便调试,定位错误,但是...当然,还是有很多手段可以提高反编译成本的 ---- 下面是source-map各种不同配置的速度 当我在production模式下,加入 devtool:"source-map"选项,打包构建后,代码里多了很多个

5.9K40
您找到你想要的搜索结果了吗?
是的
没有找到

探究 source map 在编译过程中的生成原理

而通常 generator 不会自己去做映射关系的 VLQ 编码(source map 的位置信息存储方式),而是交由专业的库来处理,比如 Mozilla 出品的 source-map。...source-map source-map 库封装了底层的映射关系计算的逻辑,在生成 source map 时向开发者提供了两种类型的 API,一种是低级 API,其单纯地通过向结果中插入源代码和编译后代码的行列对应关系来生成...在 generate 步骤,source-map 提供了 SourceNode 用于在保留原有节点信息的同时添加该节点对应源代码的行列信息。...,这其中会维护生成代码的行列信息,而在 node 中则保存有源代码的位置信息,如此便可调用 source-map 的低级 API 去生成 source-map。...最后,回到 source-map 库的实现上来。

1.1K30

webpack devtools_webpack loader和plugin的区别

226a77c9d46b33da5b78b1c76a10384c78132074/lib/WebpackOptionsApply.js#L188 if (options.devtool) { if (options.devtool.includes("source-map...namespace: options.output.devtoolNamespace }).apply(compiler); } } 从上述代码可看出,会首先判断devtool的值是否包含source-map...由此针对devtool的不同配置项,可做这样的拆分处理: 任何不包含source-map或者eval: 浏览器中不会有任何代码映射关系可寻,只能定位到打包后代码的位置。...不包含source-map且包含eval: 会将打包后每个模块的代码使用 eval() 执行,且在模块最后注释有sourceURL=xxx/xx/xx/xx.js.map类似路径,用于定位,能够定位到源码文件路径...具体逻辑可以看这里:传送门 包含source-map: 包含source-map决定了将以更为细粒度的方式来展示代码映射的详情。

43910

Webpack 性能系列三:提升编译性能

module.rules.exclude 或 module.rules.include 降低 Loader 工作量 配置 watchOption.ignored 减少监听文件数量 优化 ts 类型检查逻辑 慎重选择 source-map...七、慎用 source-map source-map 是一种将经过编译、压缩、混淆的代码代码映射回源码的技术,它能够帮助开发者迅速定位到更有意义、更结构化的源码中,方便调试。...不过,同样的 source-map 操作本身也有很大性能开销,建议读者根据实际场景慎重选择最合适的 source-map 方案。...针对 source-map 功能,Webpack 提供了 devtool 选项,可以配置 eval、source-map、cheap-source-map 等值,不考虑其它因素的情况下,最佳实践: 开发环境使用...eval ,确保最佳编译速度 生产环境使用 source-map,获取最高质量 参考:https://webpack.js.org/configuration/devtool/ 八、总结 至此,结合前两篇文章

1.2K20

webpack实战——生产环境配置【中】

devtool: 'source-map' } 而对于CSS、SCSS及Less来说,则需要添加额外的source map配置项。...devtool: 'source-map', module: { rules: [ // scss {...而在生产环境中,通常我们会对代码进行压缩,而最常见的压缩插件UglifyjsWebpackPlugin目前只支持source-map形式。...1.3 安全 在1.1中我们抛出一个安全问题,就是在开启source-map的时候任何人都可以通过浏览器的开发者工具devtool来看到工程源码,因此对于安全性来讲是一个极大的隐患。...开发环境中我们关注打包速度,而在生产环境中我们关心的则是线上错误处理、输出资源的体积以及资源渲染等问题,而比较好的利用source-map和资源压缩都可以帮助我们处理处理或优化生产环境中的一些问题,因此比较重要

1.3K10

彻底搞懂 Webpack 的 sourcemap 配置原理

source-map$ 这个就是配置的规律,是几种基础配置的组合。 搞懂了每一种基础配置,比如 eval、nosources、cheap、module,按照规律组合起来,也就搞懂了整体的配置。...前面说过,webpack 的 sourcemap 配置是 eval、cheap、nosources、inline、source-map 等基础配置的组合。...再来看下一个基础配置: source-map source-map 的配置是生成独立的 sourcemap 文件: 可以关联,也可以不关联,比如加上 hidden,就是生成 sourcemap 但是不关联...比如 devtool 配置为 source-map,生成的 sourcemap 是这样的: 当你加上 nosources 之后,生成的 sourcemap 就没有 sourceContent 部分了:...source-map$ 的规律来进行组合,就可以实现各种需求下的 sourcemap 配置。

1.3K30
领券