Webpack:定义'查询'与多个装有反应热和巴贝尔的装载机

时间:2016-04-06 14:46:07

标签: javascript webpack babeljs

更新:感谢@bebraw,解决方法是使用新的babel预设:

  

请注意,react-hot已被弃用,现在有一个等效的babel插件。 npmjs.com/package/babel-preset-react-hmre为您做好设置。

具体错误是:

Cannot define 'query' and multiple loaders in loaders list

This链接是遇到相同错误但有不同解决方案的人。

理想情况下,我可以运行这样的事情:

module: 
  {
    loaders: [
      {
        test: /\.js$/,
        loaders: ['react-hot', 'babel'],
        exclude: /node_modules/,
        include: path.join(__dirname, 'app'),
        query: {
          stage: 0,
          plugins: ['./babelRelayPlugin']
        }
      },

我希望通过Babel传播的内容经过babelRelayPlugin,这是一个js文件,位于/

我的babelRelayPlugin.js文件如下所示:

var babelRelayPlugin   = require('babel-relay-plugin');
var introspectionQuery = require('graphql/utilities').introspectionQuery;
var request            = require('sync-request');

var graphqlHubUrl = 'http://www.GraphQLHub.com/graphql';
var response = request('GET', graphqlHubUrl, {
  qs: {
    query: introspectionQuery
  }
});

var schema = JSON.parse(response.body.toString('utf-8'));

module.exports = babelRelayPlugin(schema.data, {
  abortOnError: true,
});

问题在于您无法使用多个加载器并且拥有query。我认为解决方案位于"查询参数"使用?内联,但我尝试了许多可能的解决方案,但无法使其工作。

1 个答案:

答案 0 :(得分:0)

请注意,react-hot已被弃用,现在有一个等效的babel插件。 npmjs.com/package/babel-preset-react-hmre为您做好设置。

或者你可以像这样分割你的配置:

{
  test: /\.js$/,
  loaders: ['react-hot'],
  exclude: /node_modules/,
  include: path.join(__dirname, 'app')
},
{
  test: /\.js$/,
  loaders: [babel'],
  exclude: /node_modules/,
  include: path.join(__dirname, 'app'),
  query: {
    stage: 0,
    plugins: ['./babelRelayPlugin']
  }
}

请注意,从右到左,从下到上评估装载程序。因此订单。