我正在尝试使用 gulp 浏览我的 react 应用程序以进行生产,并 envify 设置 NODE_ENV.所以我可以删除反应警告,控制台中的错误报告,甚至我的代码来禁用一些功能,比如 react-addons-perf 的要求.
I'm trying to browserify my react app for production using gulp and envify to setup NODE_ENV. So I can remove react warning, error reporting in the console, and even my code to disable some features like the require of react-addons-perf.
而且效果很好.当我在我的 app.js 中搜索生产"以查看是否存在这些典型条件时:
And it's working great. When I search in my app.js for "production" to see if there are theses typical conditions :
if("development" !== "production") {
...
}
什么都没有,所以,正如我所说,它似乎运作良好.
There is nothing, so, as I said, it seems to work well.
但是,我仍然可以看到带有所有 react 组件的 chrome 的 react DevTools 选项卡,就像我在开发网站上一样.如何在 chrome 的开发工具中禁用此选项卡?
But, I still can see that chrome's react DevTools tab with all react components, like if I was on a development website. How can I disable this tab in chrome's dev tools ?
这是我的 gulp 任务:
Here is my gulp task :
var production = process.env.NODE_ENV === 'production' ? true : false;
var environment = process.env.NODE_ENV ? process.env.NODE_ENV : 'dev';
...
var bundler = browserify({
debug: !production,
// These options are just for Watchify
cache: {}, packageCache: {}, fullPaths: true
})
.require(require.resolve('./dev/client/main.js'), { entry: true })
.transform(envify({global: true, _: 'purge', NODE_ENV: environment}), {global: true})
.transform(babelify)
.transform(reactify);
var start = Date.now();
bundler.bundle()
.on('error', function (err) {
console.log(err.toString());
this.emit("end");
})
.pipe(source('main.js'))
.pipe(gulpif(options.uglify, streamify(uglify())))
.pipe(gulpif(!options.debug, streamify(stripDebug())))
.pipe(gulp.dest(options.dest))
.pipe(notify(function () {
console.log('Built in ' + (Date.now() - start) + 'ms');
}));
};
根据 Github 上的一个问题,你可以在 react 加载前添加 run 单行 javascript 来防止它.
According to an issue on Github, you can add run a single javascript line before react is loaded to prevent it.
来自 #191 of react-devtools
<script>
window.__REACT_DEVTOOLS_GLOBAL_HOOK__.inject = function () {}
</script>
然后,您可以考虑将其与您的环境条件一起包装,就像您可以在服务器端渲染中执行以下操作一样.比方说哈巴狗(以前称为 Jade):
Then, you may consider wrapping this with your environment condition, like that you could do sth like below in your server side rendering. Let's say Pug (formerly known as Jade):
#{process.env.NODE_ENV == 'production' ? "window.__REACT_DEVTOOLS_GLOBAL_HOOK__.inject = function(){}" : ""}
但是,将业务逻辑和敏感数据放回您的服务器仍然是一个好习惯.
However, it would be still a good practice to put the business logic and the sensitive data back to your server.
这篇关于禁用 chrome react DevTools 进行生产的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
Browserify,Babel 6,Gulp - 传播运算符上的意外令牌Browserify, Babel 6, Gulp - Unexpected token on spread operator(Browserify,Babel 6,Gulp - 传播运算符上的意外令牌)
是否可以将标志传递给 Gulp 以使其以不同的方式Is it possible to pass a flag to Gulp to have it run tasks in different ways?(是否可以将标志传递给 Gulp 以使其以不同的方式运行任务
为什么我们需要在全局和本地安装 gulp?Why do we need to install gulp globally and locally?(为什么我们需要在全局和本地安装 gulp?)
如何一个接一个地依次运行 Gulp 任务How to run Gulp tasks sequentially one after the other(如何一个接一个地依次运行 Gulp 任务)
打开 Javascript 文件时 Visual Studio 2015 崩溃Visual Studio 2015 crashes when opening Javascript files(打开 Javascript 文件时 Visual Studio 2015 崩溃)
检测 FLASH 插件崩溃Detect FLASH plugin crashes(检测 FLASH 插件崩溃)