首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gulp/Webpack不转译Vue文件

Gulp/Webpack不转译Vue文件
EN

Stack Overflow用户
提问于 2017-03-23 07:20:42
回答 1查看 540关注 0票数 1

当我从命令行运行Webpack时,一切都运行得很好:生成的包被适当地转换/丑化,并且在浏览器中运行得很好。然而,当我尝试从Gulp (我正在使用Gulp@4,FWIW)呼叫Webpack时,我总是得到这样的错误:

代码语言:javascript
复制
stream.js:74
      throw er; // Unhandled stream error in pipe.
      ^
Error: bundle.js from UglifyJs
Unexpected token: name (Vue) [bundle.js:47,8]

我从.babelrc开始使用巴别塔,手动将Webpack流指向Webpack 2^.X.X,甚至在reading this之后给了Buble一次机会。有什么建议吗?

package.json

代码语言:javascript
复制
"dependencies": {
  "body-parser": "^1.16.0",
  "csv-parse": "^1.2.0",
  "express": "^4.14.1",
  "express-handlebars": "^3.0.0",
  "knex": "^0.12.7",
  "marked": "^0.3.6",
  "sass": "^0.5.0",
  "sqlite3": "^3.1.8"
},
"devDependencies": {
  "browser-sync": "^2.18.8",
  "buble": "^0.15.2",
  "buble-loader": "^0.4.1",
  "css-loader": "^0.27.3",
  "eslint": "^3.14.1",
  "eslint-plugin-html": "^2.0.1",
  "eslint-plugin-vue": "^2.0.1",
  "gulp": "github:gulpjs/gulp#4.0",
  "gulp-nodemon": "^2.2.1",
  "gulp-sass": "^3.1.0",
  "gulp-uglify": "^2.1.2",
  "gulp-webpack": "^1.5.0",
  "jsdoc-to-markdown": "^3.0.0",
  "uglify-js": "^2.8.14",
  "vue": "^2.2.4",
  "vue-loader": "^11.2.0",
  "vue-template-compiler": "^2.2.4",
  "webpack": "^2.3.1",
  "webpack-stream": "^3.2.0"
}

webpack.config.js

代码语言:javascript
复制
const path = require('path');

const webpack = require('webpack');

module.exports = {
  entry: path.resolve(__dirname, 'src/views/vue.js'),
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'src/public/js')
  },
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      },
      {
        test: /\.js$/,
        loader: 'buble-loader'
      }
    ]
  },
  plugins: [
    new webpack.optimize.UglifyJsPlugin()
  ]
};

gulpfile.js

代码语言:javascript
复制
const path        = require('path');
const browserSync = require('browser-sync');
const gulp        = require('gulp');
const nodemon     = require('gulp-nodemon');
const uglify      = require('gulp-uglify');
const webpack     = require('webpack-stream');

const BROWSER_SYNC_DELAY    = 1000;
const NODEMON_RESTART_DELAY = 5000;

gulp.task('compile-js', (done) => {
  // Use webpack to transpile, bundle, and uglify front-end JS
  gulp.src(path.resolve(__dirname, 'src/views/vue.js'))
    .pipe(webpack(require(path.resolve(__dirname, 'webpack.config.js'))))
    .pipe(gulp.dest(path.resolve(__dirname, 'src/public/js')));

  done();
});

vue.js

代码语言:javascript
复制
import Vue from 'vue';
import App from './index.vue';

new Vue({
  el: '#app',
  render: (createElement) => {
    return createElement(App);
  }
});

index.vue

代码语言:javascript
复制
<template>
  <p>{{ message }}</p>
</template>

<script>
  export default {
    data() {
      return { message: 'Hello world!' };
    }
  };
</script>
EN

回答 1

Stack Overflow用户

发布于 2019-05-19 09:21:04

我对vue和webpack没有太多的经验,因为我自己还在学习过程中。您可能希望将vue加载器应用于js测试,因为您要将vue组件发送到bundle.js。

这只是一个想法,更正是非常受欢迎的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42964474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档