vuecli3打包时开启了productionSourceMap为true却没有生成sourcemap文件?

简介: vuecli3打包时开启了productionSourceMap为true却没有生成sourcemap文件?

问题

今天我在开启的时候发现 vuecli3 打包时开启了 productionSourceMap 为 true 却没有生成 sourcemap 文件?

我的 vue.config.js 的配置如下:

const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
module.exports = {
    publicPath: process.env.NODE_ENV === "production" ? "/kaimo/" : "/kaimo",
    // 将构建好的文件输出到哪里
    outputDir: "kaimo",
    pages: {
        index: {
            entry: "src/main.js",
            template: "src/tpl.html",
            filename: "index.html",
            title: "测试页面",
            chunks: ["chunk-vendors", "chunk-common", "index"]
        },
    },
    // 生产环境下的sourceMap
    productionSourceMap: true,
    chainWebpack: config => {
        if (process.env.NODE_ENV === "production") {
            config.externals({
                "vue": "Vue",
                "vue-router": "VueRouter"
            });
        }
    },
    configureWebpack: config => {
        if (process.env.NODE_ENV === "production") {
            config.optimization.minimizer = [
                new UglifyJsPlugin({
                    uglifyOptions: {
                        output: {
                            comments: true, // 删除注释
                        },
                        warnings: false,
                        compress: {
                            drop_console: true,
                            drop_debugger: true, // 删除debugger
                            pure_funcs: ["console.log"],
                        }
                    }
                })
            ];
        }
    }
};

设置 productionSourceMap: true 打包之后:并没有发现生成 sourcemap 文件

原因以及解决方式

定位导致的问题,我把一些优化的配置注释掉

// const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
module.exports = {
    publicPath: process.env.NODE_ENV === "production" ? "/kaimo/" : "/kaimo",
    // 将构建好的文件输出到哪里
    outputDir: "kaimo",
    pages: {
        index: {
            entry: "src/main.js",
            template: "src/tpl.html",
            filename: "index.html",
            title: "测试页面",
            chunks: ["chunk-vendors", "chunk-common", "index"]
        },
    },
    // 生产环境下的sourceMap
    productionSourceMap: true,
    chainWebpack: config => {
        if (process.env.NODE_ENV === "production") {
            config.externals({
                "vue": "Vue",
                "vue-router": "VueRouter"
            });
        }
    },
    configureWebpack: config => {
        if (process.env.NODE_ENV === "production") {
            // config.optimization.minimizer = [
            //     new UglifyJsPlugin({
            //         uglifyOptions: {
            //             output: {
            //                 comments: true, // 删除注释
            //             },
            //             warnings: false,
            //             compress: {
            //                 drop_console: true,
            //                 drop_debugger: true, // 删除debugger
            //                 pure_funcs: ["console.log"],
            //             }
            //         }
            //     })
            // ];
        }
    }
};

注释之后,打包发现生成了

所以导致生成不了的原因就是 uglifyjs-webpack-plugin 插件导致,这里我用的是 "uglifyjs-webpack-plugin": "^2.2.0", 如果我们需要使用 uglifyjs-webpack-plugin 优化代码,那么怎么解决这个问题?

我们可以打开 https://www.npmjs.com/package/uglifyjs-webpack-plugin,找到 sourceMap 配置项,可以看到这个默认是 false 的,如果要生成就需要开启。

所以我们开启 uglifyjs-webpack-plugin 插件的 sourceMap 配置项为 true

const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
module.exports = {
    publicPath: process.env.NODE_ENV === "production" ? "/kaimo/" : "/kaimo",
    // 将构建好的文件输出到哪里
    outputDir: "kaimo",
    pages: {
        index: {
            entry: "src/main.js",
            template: "src/tpl.html",
            filename: "index.html",
            title: "测试页面",
            chunks: ["chunk-vendors", "chunk-common", "index"]
        },
    },
    // 生产环境下的sourceMap
    productionSourceMap: true,
    chainWebpack: config => {
        if (process.env.NODE_ENV === "production") {
            config.externals({
                "vue": "Vue",
                "vue-router": "VueRouter"
            });
        }
    },
    configureWebpack: config => {
        if (process.env.NODE_ENV === "production") {
            config.optimization.minimizer = [
                new UglifyJsPlugin({
                    sourceMap: true,
                    uglifyOptions: {
                        output: {
                            comments: true, // 删除注释
                        },
                        warnings: false,
                        compress: {
                            drop_console: true,
                            drop_debugger: true, // 删除debugger
                            pure_funcs: ["console.log"],
                        }
                    }
                })
            ];
        }
    }
};

这样我们就能正常生成了sourcemap文件了。

目录
相关文章
|
JSON 前端开发 API
fetchEventSource源码解析
fetchEventSource源码解析
3345 1
|
JSON JavaScript 数据可视化
D3 不到20行代码就能实现世界地图的绘制
每到农历年末,相信很多小伙伴和本作者一样,都忍不住会去看江苏卫视的一档脑力比拼节目《最强大脑》,尽管上一季最强大脑喷点确实很多,但依旧没有减弱"追剧"的热情。今年最强大脑(第5季)的赛制有很大的变化,挑战的人数从百人大战,到最强30脑,再到现从第三场的一对一PK,确实与以往有了很大的不同。此外,今年更加强调了选手在生活中的光环,例如本文要引用的一场比赛就是最近一期来自清华的孙勇与北京的陈泽坤的一场以地图投影为背景的比赛,孙勇就是顶着2016安徽省高考理科状元的光环来的。今年没了叨叨魏,节目的流程显得自然了很多。好了,不扯了,来、来、来来来!我们开始说本文要讲的主题--地图。
1929 0
D3 不到20行代码就能实现世界地图的绘制
|
JavaScript 前端开发
Vue3解析markdown解析并实现代码高亮显示
Vue实现博客前端,需要实现markdown的解析,如果有代码则需要实现代码的高亮。 Vue的markdown解析库有很多,如markdown-it、vue-markdown-loader、marked、vue-markdown等。这些库都大同小异。这里选用的是marked,代码高亮的库选用的是highlight.js。
1768 0
Vue3解析markdown解析并实现代码高亮显示
|
存储 JavaScript 安全
vue项目打包优化:缩小体积productionSourceMap设置,使用cdn加速
vue项目打包优化:缩小体积productionSourceMap设置,使用cdn加速
1522 0
|
自然语言处理 算法 物联网
【技术前沿】智能反向寻车解决方案:提升停车场用户体验与运营效率
本文介绍了一种智能反向寻车解决方案,通过集成物联网(IoT)、大数据分析及用户友好的移动应用,利用蓝牙信标或RFID标签实现车辆厘米级定位。车主仅需输入车牌号或停车位编号,即可获得最佳寻车路径。该方案不仅大幅缩短寻车时间,还提升了停车场运营效率。以合肥骆岗公园为例,应用后车主平均寻车时间从10分钟缩短至2分钟内,用户满意度显著提高。
763 1
【技术前沿】智能反向寻车解决方案:提升停车场用户体验与运营效率
|
弹性计算 监控 安全
打造安全云环境:深入理解阿里云权限体系
本文将探讨阿里云上的权限管理,帮助理解其背后原理并掌握实践方法。主要内容分为三部分:一是访问控制基本原理,强调避免使用root身份,介绍权限策略语言和类型;二是五种典型的授权方式,包括服务级、操作级和资源级授权等;三是多账号环境下的集中化权限管理,重点介绍如何使用管控策略实现安全合规的集中管控。通过这些内容,用户可以更好地理解和应用阿里云的权限管理体系,确保云资源的安全与高效管理。
|
开发框架 NoSQL 前端开发
在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息
在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息
|
JavaScript
Vite使用dayjs
Vite使用dayjs
367 0
|
存储 自然语言处理 前端开发
详谈JavaScript 二进制家族:Blob、File、FileReader、ArrayBuffer、Base64
详谈JavaScript 二进制家族:Blob、File、FileReader、ArrayBuffer、Base64
629 1
|
Android开发
【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )(二)
【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )(二)
572 0

热门文章

最新文章