如何使用 / gulp 管理 ReactJS 应用程序中的应用程序变量?
How to manage application variables in a ReactJS app w/ gulp?
我有一些 application/configurations 变量,例如 MY_ENDPOINT
,它应该指向开发的 http://dev.myendpoint/
和生产的 http://myendpoint/
。我应该将此信息存储在使用 gulpjs(和 flux)的 ReactJS 应用程序中的什么位置?
如果您使用的是 browserify,则可以使用 envify 转换来提供编译时变量。
var envParams = {};
function bundle(){
return gulp.src('src/app.js')
.pipe(gulpBrowserify({
transform: [
'reactify',
['envify', envParams]
]
}))
.pipe(gulp.dest('dist'));
};
gulp.task('scripts-dev', function(){
envParams = {MY_ENDPOINT: 'http://dev.myendpoint/'};
return bundle();
});
gulp.task('scripts-prod', function(){
envParams = {MY_ENDPOINT: 'http://myendpoint/'};
return bundle();
});
在您的代码中:
fetch(process.env.MY_ENDPOINT + "api/foo')...
您也可以在命令行中提供环境变量,但是 gulp 文件默认会覆盖它们:
MY_ENDPOINT=something gulp scripts-dev
并允许命令行优先:
envParams = {MY_ENDPOINT: process.env.MY_ENDPOINT || 'http://myendpoint/'};
// or with es6 shim
envParams = Object.assign({MY_ENDPOINT: 'http://myendpoint/'}, process.env);
您还可以在其他需要静态字符串的转换之前使用 envify,例如 brfs:
var config = JSON.parse(fs.readFileSync(process.env.CONFIG_PATH));
编译成:
var config = JSON.parse(fs.readFileSync('/home/.../dev-config.json'));
最后进入:
var config = JSON.parse('{"foo": "bar"}');
我有一些 application/configurations 变量,例如 MY_ENDPOINT
,它应该指向开发的 http://dev.myendpoint/
和生产的 http://myendpoint/
。我应该将此信息存储在使用 gulpjs(和 flux)的 ReactJS 应用程序中的什么位置?
如果您使用的是 browserify,则可以使用 envify 转换来提供编译时变量。
var envParams = {};
function bundle(){
return gulp.src('src/app.js')
.pipe(gulpBrowserify({
transform: [
'reactify',
['envify', envParams]
]
}))
.pipe(gulp.dest('dist'));
};
gulp.task('scripts-dev', function(){
envParams = {MY_ENDPOINT: 'http://dev.myendpoint/'};
return bundle();
});
gulp.task('scripts-prod', function(){
envParams = {MY_ENDPOINT: 'http://myendpoint/'};
return bundle();
});
在您的代码中:
fetch(process.env.MY_ENDPOINT + "api/foo')...
您也可以在命令行中提供环境变量,但是 gulp 文件默认会覆盖它们:
MY_ENDPOINT=something gulp scripts-dev
并允许命令行优先:
envParams = {MY_ENDPOINT: process.env.MY_ENDPOINT || 'http://myendpoint/'};
// or with es6 shim
envParams = Object.assign({MY_ENDPOINT: 'http://myendpoint/'}, process.env);
您还可以在其他需要静态字符串的转换之前使用 envify,例如 brfs:
var config = JSON.parse(fs.readFileSync(process.env.CONFIG_PATH));
编译成:
var config = JSON.parse(fs.readFileSync('/home/.../dev-config.json'));
最后进入:
var config = JSON.parse('{"foo": "bar"}');