当前位置: 首页 > 知识库问答 >
问题:

javascript - vite5打包时我只想清除console.log不想清除console.info该怎么配置?

蓟浩旷
2024-06-06

vite5打包时我只想清除console.log不想清除console.info该怎么配置?

共有4个答案

钱志义
2024-06-06

How to remove console.log ,when vite build use esbuild? #7920

上面的答主写的挺好。

但提问的这个小伙伴可能无法访问 github。我补充下代码~

export default defineConfig({    esbuild: {      drop: ['console', 'debugger'],    },});
export default defineConfig(({ mode }) => {  return {    // other configuration    esbuild: {      pure: mode === 'production' ? ['console.log'] : [],    }  }}
公羊瀚
2024-06-06

安装 terser:

npm install terser --save-dev

vite.config.js中增加代码:

import { defineConfig } from 'vite';import vue from '@vitejs/plugin-vue'export default defineConfig({   plugins: [vue()],   build:{      minify:"terser",      terserOptions:{        compress:{          drop_console:true,          pure_funcs: ['console.log']        }      }    }});
  • drop_console: true 会移除所有的 console.* 调用。
  • pure_funcs: ['console.log'] 会指定只移除 console.log,其他如 console.info, console.error 等则会被保留。
饶铭
2024-06-06

How to remove console.log ,when vite build use esbuild? #7920

柯清野
2024-06-06

在Vite 5中,如果你想要在打包时仅清除console.log而不清除console.info,你可以通过修改terser插件的配置来实现。terser是Vite用于压缩和混淆代码的插件,它有一个drop_console选项可以用来控制是否移除所有的console相关调用。但是,terser并没有提供直接区分console.logconsole.info的功能。

不过,你可以通过自定义一个terser插件选项,使用compress中的pure_funcs来指定你想要移除的函数列表。在这个例子中,你可以只列出console.log,这样只有console.log调用会被移除,而console.info调用则会被保留。

以下是一个配置示例:

// vite.config.jsimport { defineConfig } from 'vite'import vue from '@vitejs/plugin-vue'export default defineConfig({  plugins: [vue()],  build: {    minify: 'terser',    terserOptions: {      compress: {        drop_console: false, // 禁用默认的移除所有console调用        pure_funcs: ['console.log'], // 只移除console.log调用      },    },  },})

在这个配置中,drop_console被设置为false,以防止terser默认移除所有console调用。然后,pure_funcs被配置为仅包含console.log,这告诉terser只移除那些函数调用。

请注意,pure_funcs的配置只能移除那些被认定为“纯函数”的调用,也就是说,如果console.log被用在某个赋值操作中,或者其返回值被使用了,那么terser可能不会移除它,因为这样做可能会改变代码的行为。

另外,如果你使用的是vite的默认配置,并且没有显式地修改minifyterserOptions,你可以直接添加或修改vite.config.js中的build对象,以添加上述配置。

最后,请确保你的viteterser插件版本是最新的,以利用最新的功能和修复。

 类似资料:
  • void clear_config([string var]) This clears all assigned config variables. If a variable name is supplied, only that variable is cleared. 清除所有配置变量,如果指定了变量名称,则只清除所指定的配置变量。 Example 13-10. clear_config 例

  • 问题内容: 有没有办法清除给定窗口中的所有超时?我认为超时存储在对象中的某个位置,但无法确认。 任何跨浏览器解决方案都是受欢迎的。 问题答案: 它们不在window对象中,但是具有id,这些id是连续的整数。 因此,您可以像这样清除所有超时:

  • 我有一个如下定义的表视图 当用户单击时,我使用单击的项目详细信息重新加载表。在我重新加载之前,我对表项调用清除 现在,当我单击另一个项目并尝试重新加载表格时,它看起来像下面这样。这是非常奇怪的,因为应该只有一行,但行的大小是一样的,就像从以前的点击,其余的行是空的,除了图标。当我点击图标时,没有任何反应。任何人以前都面临过这种情况。有人知道这是什么原因吗? 我的工具定义如下。它们只是2 的

  • vue2我这样写没问题,vue3,js版我改怎么写。

  • http://pastebin.com/6kw8cx3b 我想清除“输出”屏幕,我要让程序模拟用户按 ctrl L,在 NetBeans IDE 6.9.1(我正在使用)中,该按钮会清除输出窗口。但是,我的代码出现错误。 我的错误是... 找不到符号符号:类机器人 找不到符号符号:类 AWTException 找不到符号符号:变量记录器 找不到符号符号:类LoginPage 找不到符号符号:变量级

  • 问题内容: 我希望将数据保留在localStorage中多长时间。一般用户的localStorage数据将保留多长时间?如果用户不清除它,它将持续到重新安装浏览器? 跨浏览器是否一致? 问题答案: W3C草案对此表示 用户代理应仅出于安全原因或在用户要求时才使本地存储区中的数据过期。用户代理在运行可访问该数据的脚本时应始终避免删除数据。 因此,如果浏览器遵循该规范,则该规范应一直保留到用户在所有浏