使用laravel-mix编译ES6 React代码

时间:2018-01-10 14:05:54

标签: laravel reactjs ecmascript-6 laravel-mix

我正在尝试使用laravel-mix编译使用ES6的React代码,并且我遇到了编译像ES6中流行的箭头函数这样的问题。所以我有一个webpack.mix.js文件:

mix.react('resources/assets/js/app.js', 'public/js/app.js')
    .js('resources/assets/js/cross-brand-nav.js', 'public/js/app.js')
    .js('resources/assets/js/FullWidthTabs.js', 'public/js/app.js')
    .version()
    .combine([
        'resources/assets/bower_assets/jquery/dist/jquery.min.js',
        'resources/assets/bower_assets/moment/min/moment.min.js',
        'resources/assets/bower_assets/bootstrap/dist/js/bootstrap.js',
        'resources/assets/bower_assets/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
        'resources/assets/js/admin.js'
    ], 'public/js/admin.js').version()
    .sass('resources/assets/sass/app.scss', 'public/css')
    .sass('resources/assets/bower_assets/components-font-awesome/scss/font-awesome.scss', 'public/css').version()
    .styles([
        'resources/assets/css/FullWidthTabs.css'
    ], 'public/css/pf.css')
    .styles([
        'resources/assets/bower_assets/bootstrap/dist/css/bootstrap.min.css',
        'resources/assets/bower_assets/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css'
        ], 'public/css/admin.css').version();

当我尝试编译代码时:

testFunction = () => {

    }

我得到一个错误:

  

编译错误模块构建失败:SyntaxError:意外的令牌   (51:17)

这是指向该功能。我需要在ES6中正确编译的任何额外步骤?

2 个答案:

答案 0 :(得分:3)

好的,我似乎在这里解决了我自己的问题。首先,我需要将.babelrc文件编辑为

{
  "presets": [
    ["es2016"],
    "react"
  ],
  "plugins": [
    "babel-plugin-transform-class-properties"
  ]
}

显然安装了babel-plugin-transform-class-properties插件和babel-preset-es2016,然后事情似乎就像我预期的那样编译和工作。

答案 1 :(得分:1)

还不包括属于类的箭头函数。您需要安装babel-transform-class-properties

运行此命令:

npm install --save-dev babel-plugin-transform-class-properties

如果不存在,请在项目的根目录中创建一个.babelrc文件

{
  "plugins": ["transform-class-properties"]
}

或者如果您需要添加一些选项

{
  "plugins": [
    ["transform-class-properties", { "spec": true }]
  ]
}