gulp - 如何使用/gulp 管理 ReactJS 应用程序中的应用程序变量?

标签 gulp reactjs

我有一些应用程序/配置变量,例如 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"}');

关于gulp - 如何使用/gulp 管理 ReactJS 应用程序中的应用程序变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852236/

相关文章:

webpack - Vue.js 2.0 模块构建失败 : SyntaxError: Unexpected token using webpack, Elixir 和 gulp

forms - 运行 Gulp 任务 web

coffeescript - 如何在管道中间添加src文件

javascript - 如何使用 react 路由器通过永久链接引用数据

reactjs - 如何使用 React + Next.js 在 Material UI 中使用 Theme?

javascript - 如何在 'useEffect' 钩子(Hook)中获取最新的组件变量值?

css - 在 SASS 中乘以无单位值时出现意外结果

javascript - gulp 4.0 : run tasks in series

javascript - React-hot-loader:React.createElement:类型无效——更新屏幕时预计会出现字符串错误

html - 如何创建双轮廓边框?