目录
  • Vue生产环境自动屏蔽console
    • 背景
    • 原理
    • 实现
  • Vue打包后取消console
    • 总结

      Vue生产环境自动屏蔽console

      背景

      在开发中打的log可能会忘记删除导致发上生产版本后有log打出

      为了保证生产环境不受这种影响

      所以在生产环境时自动屏蔽console;

      原理

      在项目初始化的时候判断环境,如果是生产环境则把console的指向替换;

      实现

      在main.js里插入以下代码

      // 屏蔽console
      (function shieldConsole() {
          if (process.env.NODE_ENV == "production") {
              Reflect.ownKeys(console).map(key => {
                  if (typeof console[key] == "function") {
                      console[key] = () => {};
                  }
              });
          }
          return;
      })();
      • console是symbol类型所以需要用Object.getOwnPropertySymbols()、Reflect.ownKeys() 遍历
      • 注意使用Reflect.ownKeys()遍历后会带一个symbol内置对象
      • 把console的所有方法都改空函数就不会返回了

      Vue打包后取消console

      module.exports = {
      chainWebpack(config) {
          //delete console
          config.optimization.minimizer('terser').tap((args) => {
            args[0].terserOptions.compress.drop_console = true
            return args
          })
        }
        }

      vue.config.js中增加这段代码

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

      声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。