相关疑难解决方法(0)

如何在使用Gulp时将React设置为生产模式

我需要在生产模式下运行React,这可能需要在环境中的某个地方定义以下内容:

process.env.NODE_ENV = 'production';
Run Code Online (Sandbox Code Playgroud)

问题是我在Tornado(一个python web-server)后面运行它,而不是Node.js. 我还使用Supervisord来管理龙卷风实例,所以在运行环境中如何设置它并不是很清楚.

但是我使用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: …
Run Code Online (Sandbox Code Playgroud)

javascript python tornado flask reactjs

31
推荐指数
2
解决办法
2万
查看次数

在源代码中使用NODE_ENV来控制Webpack的构建过程

我正在我的项目中设置Redux DevTools(https://www.npmjs.com/package/redux-devtools),并希望在构建生产项目时排除DevTools.文档说这可以通过使用以下代码来完成:

if (process.env.NODE_ENV === 'production') {
  module.exports = require('./configureStore.prod');
} else {
  module.exports = require('./configureStore.dev');
}
Run Code Online (Sandbox Code Playgroud)

我已经有一个带常量的模块,所以我已经在那里检查了NODE_ENV.

Constants.PRODUCTION = process.env.NODE_ENV === 'production'
Run Code Online (Sandbox Code Playgroud)

在我的Webpack配置文件中,我有以下代码:

const production = process.env.NODE_ENV === 'production'

var config = {
  // configuration goes here
}

if (production) {
  config.plugins = [
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false,
      },
    }),
  ].concat(config.plugins)
}
Run Code Online (Sandbox Code Playgroud)

当运行set NODE_ENV=production&&webpack构建时,将缩小并使用webpackdosen't缩小构建.但是,在源代码本身中,NODE_ENV未定义:

console.log(process.env.NODE_ENV) // Output: Undefined
Run Code Online (Sandbox Code Playgroud)

如果我将我设置Constants.PRODUCTIONtrue然后DevTools不包含在构建中.不知怎的,我应该使用DefinePlugin或ProvidePlugin(Redux DevTools文档提到它们但在不同的地方),但我无法弄清楚如何.我使用Windows 10,DevTools 3.0.0和npm脚本来运行构建过程.任何人都可以帮我解决我应该如何在我的webpack配置文件中设置DefinePlugin或ProvidePlugin?

javascript windows npm webpack redux-devtools

5
推荐指数
1
解决办法
3743
查看次数

标签 统计

javascript ×2

flask ×1

npm ×1

python ×1

reactjs ×1

redux-devtools ×1

tornado ×1

webpack ×1

windows ×1