Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

source map是什么?生产环境怎么用? #108

Open
TieMuZhen opened this issue Mar 13, 2022 · 0 comments
Open

source map是什么?生产环境怎么用? #108

TieMuZhen opened this issue Mar 13, 2022 · 0 comments
Labels

Comments

@TieMuZhen
Copy link
Owner

TieMuZhen commented Mar 13, 2022

source map是将编译、打包、压缩后的代码映射回源代码的过程。打包压缩后的代码不具备良好的可读性,想要调试源码就需要soucre map

map文件只要不打开开发者工具,浏览器是不会加载的

线上环境(生产环境)一般有三种处理方案:

  • hidden-source-map:借助第三方错误监控平台 Sentry 使用
  • nosources-source-map:只会显示具体行数以及查看源代码的错误栈。安全性比sourcemap
  • sourcemap:通过nginx设置将.map文件只对白名单开放(公司内网)

注意:

避免在生产环境(线上环境)中使用inline-eval-

  • inline-

inline-是将SourceMap内联到原始文件中,而不是创建一个单独的文件。

devtoolsource-map的情况下打包后,有一个.map文件存储代码的映射关系:

devtoolinline-source-map的情况下,映射关系会一同写到编译后的代码中:

对比可知inline-会增加bundle体积大小,并降低整体性能

  • eval-

eval- 会通过eval包裹每个模块打包后代码以及对应生成的SourceMap,因为eval中为字符串形式,所以当源码变动的时候进行字符串处理会提升rebuild的速度。
但同样因为是eval包裹js代码,很容易被XSS攻击,存在很大的安全隐患。所以,eval我们一般只用于开发环境,不会用于打包线上环境的代码。

参考文献

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant