}
})
})
+
+ test('comments option', () => {
+ __DEV__ = false
+ const astNoComment = baseParse('<!--abc-->')
+ const astWithComments = baseParse('<!--abc-->', { comments: true })
+ __DEV__ = true
+
+ expect(astNoComment.children).toHaveLength(0)
+ expect(astWithComments.children).toHaveLength(1)
+ })
})
describe('Element', () => {
*/
decodeEntities?: (rawText: string, asAttr: boolean) => string
onError?: (error: CompilerError) => void
+ /**
+ * Keep comments in the templates AST, even in production
+ */
+ comments?: boolean
}
export type HoistTransform = (
isCustomElement: NO,
decodeEntities: (rawText: string): string =>
rawText.replace(decodeRE, (_, p1) => decodeMap[p1]),
- onError: defaultOnError
+ onError: defaultOnError,
+ comments: false
}
export const enum TextModes {
} else {
node.content = node.content.replace(/[\t\r\n\f ]+/g, ' ')
}
- } else if (!__DEV__ && node.type === NodeTypes.COMMENT) {
- // remove comment nodes in prod
+ } else if (
+ !__DEV__ &&
+ node.type === NodeTypes.COMMENT &&
+ !context.options.comments
+ ) {
+ // remove comment nodes in prod by default
removedWhitespace = true
nodes[i] = null as any
}