如何在此webpack babel配置中启用第0阶段,以便我可以使用装饰器

时间:2015-11-17 03:36:48

标签: webpack babeljs webpack-dev-server

我尝试使用我的应用程序应用这个示例http://jamesknelson.com/unlocking-decorators-and-other-es7-features-with-webpack-and-babel/来启用装饰器。我尝试按照说明将query:{stage:0}添加到webpack.config.js,但我收到错误Cannot define 'query' and multiple loaders in loaders list

在我的fluxible babel 5 webpack项目中启用stage:0 / decorators的正确方法是什么?

.babelrc文件与传递给webpack.config的选项之间的区别是什么?

webpack.config.js

var webpack = require('webpack');
var path = require('path');

var webpackConfig = {
    resolve: {
        extensions: ['', '.js', '.jsx']
    },
    entry: [
        'webpack-dev-server/client?http://localhost:3000',
        'webpack/hot/only-dev-server',
        './client.js'
    ],
    output: {
        path: path.resolve('./build/js'),
        publicPath: '/public/js/',
        filename: 'main.js'
    },
    module: {
        loaders: [
            {
                test: /\.(js|jsx)$/,
                exclude: /node_modules/,
                loaders: [
                    require.resolve('react-hot-loader'),
                    require.resolve('babel-loader')
                ],
                query: {stage: 0}
            },
            { test: /\.json$/, loader: 'json-loader'}
        ]
    },
    node: {
        setImmediate: false
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin(),
        new webpack.DefinePlugin({
            'process.env': {
                NODE_ENV: JSON.stringify(process.env.NODE_ENV)
            }
        })
    ],
    devtool: 'eval'
};

module.exports = webpackConfig;

3 个答案:

答案 0 :(得分:0)

这是一个非最佳的解决方案,但它对你来说可能已经足够好了,而且对我来说是这样的:

  1. 将babel-core和babel-loader降级为版本5.具体在package.json devDependencies

    “babel-core”:“5.8.14”, “babel-loader”:“5.3.2”

  2. 将babel配置添加为package.json中的顶级属性:

    “babel”:{   “阶段”:0 }

  3. 可以将相同的属性放在.babelrc文件中。

    资料来源:Hendrik Swanepoel关于React的Pluralsite课程以及相应的回购:https://github.com/hendrikswan/react-stack。在课程中,他广泛使用alt.js装饰器,它没有任何警告。

    同样,这不是一个完美的解决方案,因为它需要降低你的依赖关系,但它可能会节省你和其他人一些时间。

答案 1 :(得分:0)

SurviveJS上有关于您的设置的说明。我试了一下,效果很好。它也可以帮助你:

  

http://survivejs.com/webpack_react/webpack_and_react/

答案 2 :(得分:0)

.babelrc设置为可用于我的可渗透项目

{
  "optional": ["es7.classProperties"],
  "stage": 0
}