feat(compiler-core): add comments parser option (#1858)
				
					
				
			This commit is contained in:
		
							parent
							
								
									823a2bc563
								
							
						
					
					
						commit
						62b9d02f6f
					
				@ -374,6 +374,16 @@ describe('compiler: parse', () => {
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    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', () => {
 | 
			
		||||
 | 
			
		||||
@ -49,6 +49,10 @@ export interface ParserOptions {
 | 
			
		||||
   */
 | 
			
		||||
  decodeEntities?: (rawText: string, asAttr: boolean) => string
 | 
			
		||||
  onError?: (error: CompilerError) => void
 | 
			
		||||
  /**
 | 
			
		||||
   * Keep comments in the templates AST, even in production
 | 
			
		||||
   */
 | 
			
		||||
  comments?: boolean
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export type HoistTransform = (
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,8 @@ export const defaultParserOptions: MergedParserOptions = {
 | 
			
		||||
  isCustomElement: NO,
 | 
			
		||||
  decodeEntities: (rawText: string): string =>
 | 
			
		||||
    rawText.replace(decodeRE, (_, p1) => decodeMap[p1]),
 | 
			
		||||
  onError: defaultOnError
 | 
			
		||||
  onError: defaultOnError,
 | 
			
		||||
  comments: false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const enum TextModes {
 | 
			
		||||
@ -228,8 +229,12 @@ function parseChildren(
 | 
			
		||||
          } 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
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user