我需要在生产模式下运行 React,这大概需要在环境中的某个地方定义以下内容:
process.env.NODE_ENV = 'production';
问题是我在 Tornado(python 网络服务器)而不是 Node.js 后面运行它。我还使用 Supervisord 来管理 tornado 实例,所以不清楚如何在运行环境中设置它。
不过,我确实使用 Gulp 将我的 jsx 文件构建为 javascript。
是否有可能以某种方式在 Gulp 中设置它?如果是这样,我如何检查 React 是否在生产模式下运行?
这是我的 Gulpfile.js:
'use strict';
var gulp = require('gulp'),
babelify = require('babelify'),
browserify = require('browserify'),
browserSync = require('browser-sync'),
source = require('vinyl-source-stream'),
uglify = require('gulp-uglify'),
buffer = require('vinyl-buffer');
var vendors = [
'react',
'react-bootstrap',
'jquery',
];
gulp.task('vendors', function () {
var stream = browserify({
debug: false,
require: vendors
});
stream.bundle()
.pipe(source('vendors.min.js'))
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest('build/js'));
return stream;
});
gulp.task('app', function () {
var stream = browserify({
entries: ['./app/app.jsx'],
transform: [babelify],
debug: false,
extensions: ['.jsx'],
fullPaths: false
});
vendors.forEach(function(vendor) {
stream.external(vendor);
});
return stream.bundle()
.pipe(source('build.min.js'))
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest('build/js'));
});
gulp.task('watch', [], function () {
// gulp.watch(['./app/**/*.jsx'], ['app', browserSync.reload]);
gulp.watch(['./app/**/*.jsx'], ['app']);
});
gulp.task('browsersync',['vendors','app'], function () {
browserSync({
server: {
baseDir: './',
},
notify: false,
browser: ["google chrome"]
});
});
gulp.task('default',['browsersync','watch'], function() {});
最佳答案
2017 - 编辑:任何试图在 Gulp 中为新项目设置 React 的人:只需使用 create-react-app
第一步:将以下内容添加到您的 gulpfile.js 中
gulp.task('apply-prod-environment', function() {
process.env.NODE_ENV = 'production';
});
第二步:将其添加到您的默认任务(或您用于服务/构建应用程序的任何任务)
// before:
// gulp.task('default',['browsersync','watch'], function() {});
// after:
gulp.task('default',['apply-prod-environment', 'browsersync','watch'], function() {});
可选:如果您想完全确定自己处于 prod 模式,您可以创建以下稍微增强的任务,而不是步骤 I 中的任务:
gulp.task('apply-prod-environment', function() {
process.stdout.write("Setting NODE_ENV to 'production'" + "\n");
process.env.NODE_ENV = 'production';
if (process.env.NODE_ENV != 'production') {
throw new Error("Failed to set NODE_ENV to production!!!!");
} else {
process.stdout.write("Successfully set NODE_ENV to production" + "\n");
}
});
如果 NODE_ENV 从未设置为“生产”,则会引发以下错误
[13:55:24] Starting 'apply-prod-environment'...
[13:55:24] 'apply-prod-environment' errored after 77 μs
[13:55:24] Error: Failed to set NODE_ENV to production!!!!
关于javascript - 使用 Gulp 时如何将 React 设置为生产模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32526281/