1、准备

  1. // 引入
  2. function print() {
  3. const content = 'hello print'; console.log(content)();
  4. }
  5. print()
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. source map
  11. </body>
  12. </html>

2、webpack.config.js

  1. const { resolve } = require('path');
  2. const HtmlWebpackPlugin = require('html-webpack-plugin');
  3. module.exports = {
  4. entry: ['./src/js/index.js', './src/index.html'],
  5. output: {
  6. filename: 'js/built.js',
  7. path: resolve(__dirname, 'build')
  8. },
  9. module: {
  10. rules: [
  11. {
  12. // 处理html中img资源
  13. test: /\.html$/,
  14. loader: 'html-loader'
  15. },
  16. ]
  17. },
  18. plugins: [
  19. // plugins的配置
  20. new HtmlWebpackPlugin({
  21. template: './src/index.html'
  22. })
  23. ],
  24. mode: 'development',
  25. devServer: {
  26. compress: true,
  27. port: 3000,
  28. open: true,
  29. hot: true
  30. },
  31. devtool: 'source-map'
  32. };

3、结果

1、当为cheap-source-map时,

控制台:
image.png
源代码:
image.png

2、当为source-map时,

控制台:
image.png
源代码:
image.png

4、总结

source-map: 一种 提供源代码到构建后代码映射 技术
(如果构建后代码出错了,通过映射可以追踪源代码错误)
[inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map
source-map:外部
错误代码准确信息 和 源代码的错误位置
inline-source-map:内联
只生成一个内联source-map
错误代码准确信息 和 源代码的错误位置
hidden-source-map:外部
错误代码错误原因,但是没有错误位置
不能追踪源代码错误,只能提示到构建后代码的错误位置
eval-source-map:内联
每一个文件都生成对应的source-map,都在eval
错误代码准确信息 和 源代码的错误位置
nosources-source-map:外部
错误代码准确信息, 但是没有任何源代码信息
cheap-source-map:外部
错误代码准确信息 和 源代码的错误位置
只能精确的行
cheap-module-source-map:外部
错误代码准确信息 和 源代码的错误位置
module会将loader的source map加入
内联 和 外部的区别:1. 外部生成了文件,内联没有 2. 内联构建速度更快
开发环境:速度快,调试更友好
速度快(eval>inline>cheap>…)
eval-cheap-souce-map
eval-source-map
调试更友好
souce-map
cheap-module-souce-map
cheap-souce-map
—> eval-source-map / eval-cheap-module-souce-map
生产环境:源代码要不要隐藏? 调试要不要更友好
内联会让代码体积变大,所以在生产环境不用内联
nosources-source-map 全部隐藏
hidden-source-map 只隐藏源代码,会提示构建后代码错误信息
—> source-map / cheap-module-souce-map