Gulp 打包 Vue 组件时模板没被编译怎么办?
我用 Gulp 打包一个简单的 Vue 单文件组件,但发现 HTML 模板根本没被处理,浏览器里直接显示了原始的 <template> 内容,这肯定不对啊。
我已经装了 gulp-vue-plugin 和相关依赖,也按文档配了 pipeline,但就是不生效。是不是漏了什么步骤?
<template>
<div class="hello">{{ msg }}</div>
</template>
<script>
export default {
data() {
return { msg: 'Hello Gulp!' }
}
}
</script>
gulp-vue或vueify插件。从你的描述来看,可能是因为缺少必要的 Babel 转换步骤或者 Vue 文件没有被正确解析。首先,确认你已经安装了
vueify和vinyl-source-stream这些必要的工具。然后,检查你的 Gulp 配置文件,确保你有一个正确的 pipeline 来处理.vue文件。以下是一个简单的配置示例:pre class="pure-highlightjs line-numbers">
var gulp = require('gulp');
var browserify = require('browserify');
var vueify = require('vueify');
var source = require('vinyl-source-stream');
gulp.task('build', function () {
return browserify({
entries: './src/main.js',
transform: [vueify]
})
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('./dist'));
});
注意这里的
transform: [vueify]这一行,它告诉 Browserify 使用vueify来处理.vue文件。确保你的main.js或入口文件中正确引入了 Vue 组件。另外,确保你的项目中有
.babelrc或babel.config.js文件,并且配置了正确的预设,比如@babel/preset-env,以便正确编译 ES6 语法。如果以上步骤都正确无误,但问题依然存在,可以尝试清理缓存或重新安装依赖,有时候 npm 的缓存问题也会导致奇怪的行为。