使用Gulp时如何将React设置为生产模式 [英] How to set React to production mode when using Gulp

查看:449
本文介绍了使用Gulp时如何将React设置为生产模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  process.env在生产模式下运行React,这可能需要在环境中定义以下内容: .NODE_ENV ='生产'; 

问题在于,我在Tornado(一个python web-server) .js文件。我也使用Supervisord来管理龙卷风实例,所以在运行环境中如何设置它并不十分清楚。



然而,我使用Gulp来构建我的jsx文件JavaScript的。

有没有可能以某种方式在Gulp中设置这个内容?如果是这样,我怎么检查React在生产模式下运行?



这是我的Gulpfile.js:

 'use strict'; 
$ b var gulp = require('gulp'),
babelify = require('babelify'),
browserify = require('browserify'),
browserSync = ('browser-sync'),
source = require('vinyl-source-stream'),
uglify = require('gulp-uglify'),
buffer = require('乙烯基缓冲器');

var vendors = [
'react',
'react-bootstrap',
'jquery',
];
$ b 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
});

vendor.forEach(function(vendor){
stream.external(vendor);
});

return stream.bundle()
.pipe(source ('build.min.js'))
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest('build / js')) ;

});
$ b 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 - 编辑:任何人试图设置React in一个新项目的大嘴:只要使用创建反应应用程序






第一步:

>

  gulp.task('apply-prod-environment',function(){
process.env.NODE_ENV ='production' ;
});第二步: 将其添加到您的帐户中默认的任务(或任何你用来服务/建立你的应用程序的任务)

  //之前:
// gulp .task('default',['browsersync','watch'],function(){});
// after:
gulp.task('default',['apply-prod-environment','browsersync','watch'],function(){});






可选: p $ p> gulp.task('apply-prod-environment',function(){
process.stdout.write(将NODE_ENV设置为'production'+\\\
);
process.env.NODE_ENV ='production';
if(process.env.NODE_ENV!='production'){
throw new Error(无法将NODE_ENV设置为生产! (成功将NODE_ENV设置为生产+\ n);
}
});
} else {
process.stdout.write

如果NODE_ENV没有设置为'production',那么会抛出下面的错误。 b
$ b

  [13:55:24]启动'apply-prod-environment'... 
[13:55:24]'apply -prod-environment在77微秒后错误
[13:55:24]错误:无法将NODE_ENV设置为生产!!!!


I need to run React in production mode, which presumably entails defining the following somewhere in the enviornment:

process.env.NODE_ENV = 'production';

The issue is that I'm running this behind Tornado (a python web-server), not Node.js. I also use Supervisord to manage the tornado instances, so it's not abundantly clear how to set this in the running environment.

I do however use Gulp to build my jsx files to javascript.

Is it possible to somehow set this inside Gulp? And if so, how do I check that React is running in production mode?

Here is my 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 - Edit: anyone trying to set up React in Gulp for a new project: Just use create-react-app


Step I: Add the following to your gulpfile.js somewhere

gulp.task('apply-prod-environment', function() {
    process.env.NODE_ENV = 'production';
});

Step II: Add it to your default task (or whichever task you use to serve/build your app)

// before: 
// gulp.task('default',['browsersync','watch'], function() {});
// after:
   gulp.task('default',['apply-prod-environment', 'browsersync','watch'], function() {});


OPTIONAL: If you want to be ABSOLUTELY CERTAIN that you are in prod mode, you can create the following slightly enhanced task instead of the one in Step 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");
    }
});

Which will throw the following error if NODE_ENV is ever not set to 'production'

[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!!!!

这篇关于使用Gulp时如何将React设置为生产模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆