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文件了。

目录
相关文章
|
6天前
|
人工智能 JavaScript 前端开发
vue打包如何开启gzip压缩
vue打包如何开启gzip压缩
|
6天前
|
JSON JavaScript 数据格式
NPM 发包 js 文件并支持 ts 使用(包含 gulp 打包压缩)
NPM 发包 js 文件并支持 ts 使用(包含 gulp 打包压缩)
70 0
|
7月前
|
JavaScript 应用服务中间件 nginx
vuecli3打包项目上线之后报错怎么使用本地的sourcemap文件定位调试?
vuecli3打包项目上线之后报错怎么使用本地的sourcemap文件定位调试?
57 0
|
6天前
|
JavaScript 前端开发
vue项目打包后使用reverse-sourcemap反编译到源码(详解版)
vue项目打包后使用reverse-sourcemap反编译到源码(详解版)
245 0
|
6天前
|
监控 JavaScript 前端开发
SourceMap解析CLI工具实现(1)
前言 SourceMap 大家都不陌生了,通常情况就是产物里的xx.js.map文件里的内容。 可用于对压缩混淆后的代码还原,通常用于帮助定位源码问题。 区别于构建时的配置(以webpack 的devtool配置项为例)不同配置,source-map暴露的信息程度也就也不一样 一般公司里的项目,是会把.map文件上传到内网环境,不耽误问题排查,也不暴露源码 个人的开源项目,一般就没这么讲究了,直接和产物一起传了。 前端监控平台,一般都支持错误堆栈解析,通过.map,还原出错代码位置调用堆栈信息。 有时候没有自动解析的平台可用的时候(比如一些商用监控平台,免费版通常不提供自动source-map
|
6天前
|
JavaScript API
SourceMap解析CLI工具实现(2)
简单做合并后的方法如下
|
6月前
|
编译器
wepy踩坑-未发现相关 sass 编译器配置,请检查wepy.config.js文件
wepy踩坑-未发现相关 sass 编译器配置,请检查wepy.config.js文件
67 0
|
6月前
|
JavaScript Go iOS开发
使用脚本整合指定文件/文件夹,执行定制化 ESLint 命令
描述了如何通过自定义脚本简化 ESLint 命令的执行。该脚本支持指定文件或文件夹,指定 ESLint 配置文件,附带命令,以及前后置执行命令等功能,极大地提高了代码检查和格式化的效率。
37 1
使用脚本整合指定文件/文件夹,执行定制化 ESLint 命令
|
9月前
|
JavaScript
Vue Cli 3 打包配置--自动忽略 console.log 语句
Vue Cli 3 打包配置--自动忽略 console.log 语句
105 0
|
9月前
|
JavaScript
.ts 文件编译成 .js 文件,以及 VSCode 自动编译配置
.ts 文件编译成 .js 文件,以及 VSCode 自动编译配置
348 0