使用gulp,webpack和babel-loader:无法编译jsx

时间:2016-11-10 23:25:47

标签: webpack vue.js babeljs jsx vue-tables-2

更新vue-tables-2现已提供预编译,因此不需要加载程序。对于templates选项,建议使用范围内的插槽,也不需要任何特殊设置

我正在使用gulp,webpack和babel-loader来构建一些文件(vue-tables-2):

gulp.task('scripts-vue-tables', function() {
    gulp.src('node_modules/vue-tables-2/index.js')
        .pipe(webpackstream({
                output: {
                    path: __dirname,
                    filename: "vue-tables-2.js",
                    library: 'VueTables2',
                    libraryTarget: 'var'
                }
            }
        ))
        .pipe(gulp.dest('public/vendor/vue-tables-2/js/'));
}

webpack.config.js我已经包含:

loaders: [
        {
            test: /\.jsx?$/,
            loader: 'babel-loader',
            query: {
                presets: ["latest", "react", "stage-0"],
                plugins: ["transform-vue-jsx"]
            }
        },
    ]

并在.babelrc中包含相同内容:

{
  "presets": ["latest", "react", "stage-0"],
  "plugins": ["transform-vue-jsx"]
}

但是,运行scripts-vue-tables任务会产生错误:

Module parse failed: \node_modules\vue-tables-2\lib\template.jsx Unexpected token (15:7)
You may need an appropriate loader to handle this file type.

注意:一般情况下,我尝试按照here概述的步骤进行操作。

1 个答案:

答案 0 :(得分:2)

如果您使用webpack CLI界面,

webpack.config.js是读取的文件,但在您的Gulp示例用例中,它将不会被使用。你可能想要像

这样的东西
    .pipe(webpackstream(Object.assign({
        output: {
            path: __dirname,
            filename: "vue-tables-2.js",
            library: 'VueTables2',
            libraryTarget: 'var'
        },
    }, require('./webpack.config')))

加载Webpack配置特殊output逻辑。