2016-10-06 45 views
5

嗨想知道是否有任何理由有一个.babelrc文件来存储预设,而不是在webpack.config文件中的预设(除了能够重新使用babelrc文件在另一个项目中)。 我有一个工作正常使用.babelrc文件中像这样的应用程序:Webpack Babel - 关于.babelrc

{ 
    "presets": ["es2015", "stage-0","react"] 
} 

我然后移动应用程序到另一个的WebPack结构没有.babelrc文件:

//webpack.config.js 
module: { 
    loaders: [ 
     { 
     test: /(\.js|\.jsx)$/, 
     exclude: /(node_modules)/, 
     loader: 'babel', 
     query: { presets: ['es2015', 'stage-0', 'react'] } 
     }, 

奇怪的是,该应用程序现在停止与解析jsx和'import'关键字等问题在我的server.js文件中工作。它只在我添加babelrc文件时起作用。任何人都可以请解释为什么它只适用于babelrc文件?

+0

这听起来像你server.js文件不使用Webpack,但依赖于babel-node/babel-register? – riscarrott

+0

server.js文件是使用Webpack.config – mtangula

+0

我真的不知道你的意思,但你可以找到一些东西,因为我发现一行需求('babel-core/register'),但同时链接(即导入)webpack.config文件 – mtangula

回答

0

更改您的装载机babel-loaderwebpack.config.js,并且需要使用

npm install babel-loader babel-core babel-preset-es2015 --save-dev 

另外,还要确保你已经安装了babel-preset-react

命令

webpack.config.js安装它们之前

module: { 
    loaders: [ 
     { 
     test: /\.js?$/, 
     exclude: /(node_modules|bower_components)/, 
     loader: 'babel-loader', 
     query: { 
      presets: ['react', 'es2015', 'stage-0'], 
      plugins: ['react-html-attrs', 'transform-decorators-legacy'], 
     } 
     } 
    ] 
    }, 
+0

nope,不幸的是这不是答案,因为它还没有做任何事情。我有其他的应用程序使用babel像上面,而不是babel-loader,他们仍然工作。 – mtangula

+0

检查更新多数民众赞成我如何使用webpack模块,它适用于我。让我知道它现在是否可行 –

+0

不,我添加了这些插件,但它仍然坚持要我放入.babelrc文件。 – mtangula

0

在你的WebPack配置,而不是传递query选项,您可以使用关键字babel通天设置选项:

babel: { 
    babelrc: false, 
    presets: ['react', 'es2015', 'stage-0'], 
    plugins: ['react-html-attrs', 'transform-decorators-legacy'] 
}, 
modules: { 
    loaders: [ 
    ... 
    ] 
} 

这似乎已经解决了这个问题对我来说。不幸的是,我完全不知道为什么这个工程:-(

你可以看到一些巴贝尔装载机测试都采用这种设置选项: https://github.com/babel/babel-loader/blob/master/test/options.test.js#L70

相关问题