webpack学习第六步——source-map的使用

什么是source-map

  • 构建了处理前的代码和处理后的代码之间的桥梁。主要是方便开发人员的错误定位。处理是指
    • 压缩,减小体积
    • 将多个文件合并成同一个文件
    • 其他语言编译成javascript,比如TypeScript和CoffeeScript等

设置dev-tool

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const CleanWebpackPlugin = require('clean-webpack-plugin')
module.exports = {
    mode: "development",
    entry: {
        bundle: './src/index.js',
    },
    // 设置为none
    devtool: "none",
    module: {
        rules: [{
            test: /\.(jpg|png|gif)$/,
            use: {
                loader: "url-loader",
                options: {
                    name: '[name]_[hash].[ext]',
                    outputPath: 'images/',
                    limit: 2048
                }
            }
        },{
            test: /\.scss$/,
            use: [
                'style-loader',
                {
                    loader: "css-loader",
                    options: {
                        importLoaders: 2 ,
                        modules: true
                    }
                },
                'sass-loader',
                'postcss-loader'
            ]
        }]
    },
    plugins: [
        new HtmlWebpackPlugin({
        template: 'src/index.html'
        }),
        new CleanWebpackPlugin()
    ],
    output: {
        path: path.resolve(__dirname, 'build'),
        filename: '[name].js'
    }
}

关闭source-map后打包,打包后生成bundle.js

打开source-map

devtool: "source-map"
  • 打包后的模块在模块后面会对应引用一个.map文件,同时在打包好的目录下会针对每一个模块生成相应的.map文件
  • 多出.map文件,方便在调试时定位错误

inline-source-map

devtool: "inline-source-map"
  • 不会生成.map文件,source-map以base64形式放到js文件里

cheap

devtool: "cheap"
  • cheap报错提示信息只精确到行,不用精确到列,性能更好

module

devtool: "module"
  • module模式会对三方库、loader等的也负责

eval

devtool: "eval"
  • eval会将每一个module模块,执行eval,执行后不会生成sourcemap文件,仅仅是在每一个模块后,增加sourceURL来关联模块处理前后的对应关系
  • eval通过eval来执行,性能最快,但是复杂的代码可能显示不全

总结

模式 特性
eval 使用eval包裹模块代码
source-map 产生.map文件
cheap 不包含列信息,也不包含loader的sourcemap
module 包含loader、三方库的sourcemap
inline 将.map作为DataURI嵌入,不单独生成.map文件
  • 在实际应用中根据需求来组合使用
    • 在dev环境中我们使用:cheap-module-eval-source-map
    • 在prd环境中我们使用:cheap-module-source-map
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 开始准备 为了从JavaScript模块中import一个CSS文件,需要安装并添加style-loader和cs...
    皮皮坤666阅读 44,021评论 1 18
  • publicPath指定了一个在浏览器中被引用的URL地址。 对于使用 和 加载器,当文件路径不同于他们的本地磁盘...
    飞呀飞哥阅读 1,775评论 0 0
  • 1、webpack的安装 本教程是基于最新的webpack4.39.3 版本 注意:webpack是基于node的...
    chang_遇见缘阅读 565评论 0 1
  • this最终指向的是调用它的那个对象 1、在普通函数里的this指向 例子1: 运行结果: 这里的this最终指向...
    洛禾sunshime阅读 346评论 0 0
  • 东华凤九同人文一概更新完结(全免费)在简书和晋江文学城,在首页搜索篇名或唐晚宁(晚宁)即可找到,按最新收录看顺序会...
    唐晚宁阅读 6,247评论 6 37

友情链接更多精彩内容