vue 2 项目 terser-webpack-plugin 去除 console失效?vue.config.js
的配置?
const pathNode = require("path");
const CompressionWebpackPlugin = require("compression-webpack-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const TEST_BASE_URL = process.env.VUE_APP_BASE_URL;
// vue.config.js
module.exports = {
transpileDependencies: ["vuex-module-decorators"],
publicPath: "/", // 基本路径
outputDir: "dist", // 设置项目打包生成的文件的存储目录,可以是静态路径也可以是相对路径。
css: {
loaderOptions: {
scss: {
prependData: `@import "~@/assets/css/style.scss";`
}
}
},
chainWebpack: config => {
config.resolve.alias
.set("@", pathNode.resolve(__dirname, "./src"))
.set("@store", pathNode.resolve(__dirname, "./src/store"))
.set("@js", pathNode.resolve(__dirname, "./src/assets/js"))
.set("@css", pathNode.resolve(__dirname, "./src/assets/css"))
.set("@img", pathNode.resolve(__dirname, "./src/assets/imgs"))
.set("@c", pathNode.resolve(__dirname, "./src/components"))
.set("@view", pathNode.resolve(__dirname, "./src/views"));
},
configureWebpack: config => {
if (process.env.VUE_APP_ENV === "production") {
return {
devtool: "none",
optimization: {
minimizer: [
new TerserPlugin({
terserOptions: {
compress: {
drop_console: true, // 移除 console 语句
drop_debugger: true, // 移除 debugger 语句
pure_funcs: ['console.log'] // 移除 console.log
}
}
})
]
},
plugins: [
new CompressionWebpackPlugin({
algorithm: "gzip", // 使用 gzip 压缩
test: /\.(js|css|html)$/, // 匹配要压缩的文件类型
threshold: 10240, // 只有大于 10KB 的文件才会被压缩
minRatio: 0.8 // 最小压缩率
})
]
};
} else {
return {
devtool: false,
optimization: {
minimizer: [
new TerserPlugin({
terserOptions: {
compress: {
drop_console: true, // 移除 console 语句
drop_debugger: true, // 移除 debugger 语句
pure_funcs: ['console.log'] // 移除 console.log
}
}
})
]
},
plugins: [
new CompressionWebpackPlugin({
algorithm: "gzip", // 使用 gzip 压缩
test: /\.(js|css|html)$/, // 匹配要压缩的文件类型
threshold: 10240, // 只有大于 10KB 的文件才会被压缩
minRatio: 0.8, // 最小压缩率
filename: "[path][base].gz" // 自定义压缩文件名
})
]
};
}
}
};
为了加快开发速度,在开发模式下,webpack 不会最小化 js
或者可以手动设置 optimization.minimize = true
https://webpack.docschina.org/configuration/optimization/#opt...
根文件调用一下 线上环境需要调试也可打开console
webpackClearConsole() {
if (!location.search.includes('debug') && process.env.NODE_ENV === 'production') {
const consoles = window.console as Console;
for (const item in consoles) {
if (Reflect.has(consoles, item)) {
consoles[item as keyof Console] = (() => { }) as never;
}
}
}
}
你的代码顶部加了判断生产环境
参考vue打包去除日志
你需要控制minimize
属性为true
即可
const TerserPlugin = require('terser-webpack-plugin');
module.exports = {
configureWebpack: {
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
ecma: undefined,
warnings: false,
parse: {},
compress: {
drop_console: true,
drop_debugger: true,
pure_funcs: ['console.log'], // 移除console
},
},
}),
],
},
}
}
因为从 webpack 4 开始,会根据 mode
来执行不同的优化。TerserPlugin
只在生产环境中生效,不在开发环境中生效。
选项 | 描述 |
---|---|
development |
会将 DefinePlugin 中 process.env.NODE_ENV 的值设置为 development ,启用 NamedChunksPlugin 和 NamedModulesPlugin 优化选项 |
production |
会将 DefinePlugin 中 process.env.NODE_ENV 的值设置为 production , 启用 FlagDependencyUsagePlugin , FlagIncludedChunksPlugin , ModuleConcatenationPlugin , NoEmitOnErrorsPlugin , OccurrenceOrderPlugin , SideEffectsFlagPlugin 和 TerserPlugin 优化选项 |
none |
不使用任何默认优化选项 |
如果想要在线上测试环境之类的生效,可以在对应的环境变量配置文件中声明 NODE_ENV = production
Mode | webpack
这个在生产环境下可以正常去除console
为什么return没用 我改成这样是可以的 // 旧文件确认
vue2给项目设置publicPath: "/MY_PROJECT/",base: process.env.BASE_URL 例如访问/login时,http://localhost:8228/MY_PROJECT/login可以正常访问,http://localhost:8228/login也可以正常访问,我想解决后者没有添加上/MY_PROJECT的路径必须添加上前缀/MY_PROJECT才能
如下图:
公司里的vue2+webpack4项目,启动编译时间达到4分钟左右,启动完以后,改一行代码,重新编译的时间,也有达到10秒左右,我想优化一下项目,使用speed-measure-webpack-plugin这个插件,测速,启动时间暂时不管,我改了东西,重新编译,总感觉是不是有东西重复了,麻烦各位大神帮忙看看 有大神如果想看看是什么奇葩项目,启动时间这么久,也可以帮我一起看看,头大
关于vue-cli4使用terser-webpack-plugin时, exclude不生效 我的目的就是想让utils.js文件下 console.* 都能打印 其余文件的console移除 vue-cli4本自带terser,使用过exclude,发现打印出来没有exclude于是安装了插件 接着自行升级了cli和安装terser-webpack-plugin "@vue/cli-servic
请问有大佬知道vue2项目打包的apk的导出功能为什么失效了吗?网页,h5的应该还是可以下载的。我又不想导出功能和后端有交互,想纯前端下载,网页的下载写法好像打包到apk后失效了。在app中加入vconsole,手机中也没有任何的error或info等信息打印出来…… 问了一些大佬,认为是内置浏览器不支持一些写法,可能是不兼容…… 还有说要用webview内嵌打包后的dist文件夹的,还有是用vc