diff --git a/src/vueTransform.js b/src/vueTransform.js index da94021..7af8330 100644 --- a/src/vueTransform.js +++ b/src/vueTransform.js @@ -146,17 +146,19 @@ export default function vueTransform(code, filePath, options) { } // 3. Don't touch files that don't look like Vue components - if (!nodes.template && !nodes.script) { + if (!nodes.script) { throw new Error('There must be at least one script tag or one' + ' template tag per *.vue file.'); } // 4. Process template - const template = processTemplate(nodes.template, filePath, code, options); + const template = nodes.template + ? processTemplate(nodes.template, filePath, code, options) + : undefined; let js; if (options.compileTemplate) { /* eslint-disable */ - const render = require('vue-template-compiler').compile(template); + const render = template ? require('vue-template-compiler').compile(template) : undefined; /* eslint-enable */ js = processScript(nodes.script, filePath, code, { render }); } else { diff --git a/test/expects/noTemplate.js b/test/expects/noTemplate.js new file mode 100644 index 0000000..06a8b08 --- /dev/null +++ b/test/expects/noTemplate.js @@ -0,0 +1,10 @@ +var noTemplate = { + render(h, c) { + return h('h1', c.data.title); + }, + data() { + return { title: 'Hello' }; + }, +}; + +export default noTemplate; \ No newline at end of file diff --git a/test/fixtures/noTemplate.vue b/test/fixtures/noTemplate.vue new file mode 100644 index 0000000..d6eef2e --- /dev/null +++ b/test/fixtures/noTemplate.vue @@ -0,0 +1,10 @@ +