NuxtJS: 如何在生产环境中禁用console.log

11

我想找到一种在生产环境中禁用console.log()的方法。就像将以下代码放入nuxt.config.jsindex.js中:

if (process.env.NODE_ENV !== "development") {
  console.log = () => {};
}

我尝试了,但它不起作用。非常感谢任何帮助。

我的nuxt.config.js在这里 https://gist.github.com/somaria/9a2b0e06497d13a35fe9eee141a15d07


在构建阶段期间,您可以尝试在变量名称之前使用 NUXT_ENV_。您能否分享您的 nuxt.config.js 文件? - nishkaush
2个回答

23

Nuxt的构建过程包括terser,可以配置以自动从生产构建中删除控制台语句。您可以设置build.terser.terserOptions

// nuxt.config.js
export default {
  build: {
    terser: {
      // https://github.com/terser/terser#compress-options
      terserOptions: {
        compress: {
          drop_console: true
        }
      }
    }
  }
}

3
作为替代方案,也可以使用插件进行操作。
在“插件”文件夹下,我们可以创建一个名为“disableLogs.js”的文件,其内容如下所示:
// plugins/disableLogs.js

export function disableLogs() {
  console.log = () => {};
  // or you can override any other stuff you want
}

process.env.NODE_ENV === "production" ? disableLogs() : null;

然后,我们可以将这个插件注册到 nuxt.config.js 中以便使用。

// nuxt.config.js
plugins: [
  { src: "~/plugins/disableLogs.js" },
  { src: "~/plugins/any-other-plugin.js"
],

在实例化根Vue.js应用程序之前,将运行此操作。

还有其他一些地方,您可以配置它在客户端或服务器端运行等。更多信息请参见此处 - https://nuxtjs.org/guide/plugins#vue-plugins


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接