如何在使用 create-react-app CRA 创建的 React 应用程序的生产版本中删除 console.log?
在我当前具有大量依赖项的项目中,我需要一种方法来禁用特定库的控制台访问,以便这些文件不能使用任何控制台功能.
我当然可以通过简单地在库包中找到并替换它来禁用控制台功能,但是因为这个项目有很多依赖性,这会使更新库变得非常麻烦.
我知道我可以通过用空功能块覆盖它来禁用控制台功能:
console.log = function(){};
Run Code Online (Sandbox Code Playgroud)
但是这会禁用整个项目的控制台功能.所以我正在寻找一个实现,或一行代码,我可以用它来禁用特定文件或代码块的控制台功能.
这个答案就像以前的魅力一样:
但是,由于Webpack v4它不再起作用.从那以后它抛出:
错误:webpack.optimize.UglifyJsPlugin已被删除,请改用config.optimization.minimize.
为了使它在Webpack v4中运行,有什么必要?
我没有运气就试过使用以下内容:
const uglifyJsPlugin = require('uglifyjs-webpack-plugin');
if (process.argv.indexOf('-p') !== -1) {
// compress and remove console statements. Only add this plugin in production
// as even if drop_console is set to false, other options may be set to true
config.plugins.push(new uglifyJsPlugin({
compress: {
'drop_console': true
}
}));
}
Run Code Online (Sandbox Code Playgroud) 我一直试图在webpack捆绑的js文件中删除注释.我已经尝试了几种方法,但它还没有工作,我得到的评论就像
"/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\ ...
Run Code Online (Sandbox Code Playgroud)
为此,捆绑的文件变得越来越大.目前巨大的1.6mb大小.我试过这个
new webpack.optimize.UglifyJsPlugin({
sourceMap: false,
compress: {
sequences: true,
dead_code: true,
conditionals: true,
booleans: true,
unused: true,
if_return: true,
join_vars: true,
drop_console: true
},
mangle: {
except: ['$super', '$', 'exports', 'require']
},
output: {
comments: false
}
})
Run Code Online (Sandbox Code Playgroud)
这也是
new webpack.optimize.UglifyJsPlugin({
compress: { warnings: false },
sourceMap: false,
output: false
})
Run Code Online (Sandbox Code Playgroud)
还将环境设置为生产环境
set NODE_ENV=production …Run Code Online (Sandbox Code Playgroud) 我正在尝试 Quasar 框架(对于那些不熟悉的人,它基于 Vue)并且进展顺利。但是我试过运行构建(npm run build)并重复:
错误意外的控制台语句 no-console
...所以构建失败,因为它看到console.log(...)并且不高兴。我的选择:
但是如何?
我查看了构建https://quasar.dev/quasar-cli/cli-documentation/build-commands,它提到在内部使用 webpack 和 UglifyJS。鉴于此,我在通用 Vue/webpack 项目中找到了删除 console.log 的答案:https : //github.com/vuejs-templates/webpack-simple/issues/21
...但如果是这样,由于没有 webpack 配置文件,Quasar 中的内容在哪里?我想象在 quasar.conf.js 文件中(因为我在那里看到了一个 'extendWebpack' 行 - 听起来很有希望)。或者有没有更好的方法来做到这一点?使用 Quasar 时,其他人如何在生产中删除console.log?或者在没有它的情况下处理日志?
谢谢!
webpack ×3
javascript ×2
reactjs ×2
build ×1
compression ×1
console.log ×1
module ×1
uglifyjs ×1
vue.js ×1