Skip to content
This repository was archived by the owner on Jan 18, 2022. It is now read-only.

Commit 7944f81

Browse files
authored
🐛 Suppress warnings when compiling template (#56)
Fixes #55
1 parent dca1b70 commit 7944f81

File tree

7 files changed

+29
-15
lines changed

7 files changed

+29
-15
lines changed

src/vueTransform.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,22 +95,23 @@ function injectTemplate (script, template, lang, options) {
9595
function processTemplate (source, id, content, options) {
9696
if (source === undefined) return undefined
9797

98-
const {node, code} = source
98+
const { code } = source
99+
const template = deIndent(code)
100+
const ignore = [
101+
'Found camelCase attribute:',
102+
'Tag <slot> cannot appear inside <table> due to HTML content restrictions.'
103+
]
99104

100105
const warnings = validateTemplate(code, content)
101106
if (warnings) {
102107
const relativePath = relative(process.cwd(), id)
103-
warnings.forEach((msg) => {
108+
warnings.filter((warning) => {
109+
return options.compileTemplate && ignore.findIndex(i => warning.indexOf(i) > -1) < 0
110+
}).forEach((msg) => {
104111
console.warn(`\n Warning in ${relativePath}:\n ${msg}`)
105112
})
106113
}
107114

108-
/* eslint-disable no-underscore-dangle */
109-
const start = node.content.childNodes[0].__location.startOffset
110-
const end = node.content.childNodes[node.content.childNodes.length - 1].__location.endOffset
111-
const template = deIndent(content.slice(start, end))
112-
/* eslint-enable no-underscore-dangle */
113-
114115
return htmlMinifier.minify(template, options.htmlMinifier)
115116
}
116117

test/expects/slot.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var TableComponent = {render: function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',[_c('tr',[_c('td',[_vm._t("default",[_vm._t("default")])],2)])])},staticRenderFns: [],};
1+
var TableComponent = {render: function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',[_c('tr',[_c('td',[_vm._t("default")],2)])])},staticRenderFns: [],};
22

33
var slot = {render: function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table-component',[_vm._v("Hello! World")])},staticRenderFns: [],
44
components: { TableComponent },

test/expects/table-n-slot.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
var tableNSlot = {render: function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',[_c('tbody',[_vm._t("default")],2)])},staticRenderFns: [],};
2+
3+
export default tableNSlot;

test/expects/table.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
var table = {render: function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',[_c('tr',[_c('td',[_vm._t("default",[_vm._t("default")])],2)])])},staticRenderFns: [],};
1+
var table = {render: function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',[_c('tr',[_c('td',[_vm._t("default")],2)])])},staticRenderFns: [],};
22

33
export default table;

test/fixtures/table-n-slot.vue

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<template>
2+
<table>
3+
<tbody>
4+
<slot></slot>
5+
</tbody>
6+
</table>
7+
</template>
8+
9+
<script>
10+
export default {}
11+
</script>

test/fixtures/table.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<table>
33
<tr>
44
<td>
5-
<slot><slot>
5+
<slot></slot>
66
</td>
77
</tr>
88
</table>

test/test.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,13 @@ function test(name) {
2323
}
2424

2525
return rollup.rollup({
26-
format: 'cjs',
2726
entry: entry,
2827
plugins: [vuePlugin({
2928
css: cssHandler,
30-
compileTemplate: ['compileTemplate', 'slot', 'table'].indexOf(name) > -1
29+
compileTemplate: ['compileTemplate', 'slot', 'table', 'table-n-slot'].indexOf(name) > -1
3130
})]
3231
}).then(function (bundle) {
33-
var result = bundle.generate()
32+
var result = bundle.generate({format: 'es'})
3433
var code = result.code
3534
assert.equal(code.trim(), expected.trim(), 'should compile code correctly')
3635

@@ -74,7 +73,7 @@ describe('styleToImports', function () {
7473
}),
7574
],
7675
}).then(function (bundle) {
77-
bundle.generate()
76+
bundle.generate({ format: 'es' })
7877

7978
assert.equal(expectedCss.trim(), actualCss.trim(), 'should import style')
8079
}).catch(function (error) {

0 commit comments

Comments
 (0)