index.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import {
  2. baseCompile,
  3. baseParse,
  4. CompilerOptions,
  5. CodegenResult,
  6. isBuiltInType,
  7. ParserOptions
  8. } from '@vue/compiler-core'
  9. import { parserOptionsMinimal } from './parserOptionsMinimal'
  10. import { parserOptionsStandard } from './parserOptionsStandard'
  11. import { transformStyle } from './transforms/transformStyle'
  12. import { transformCloak } from './transforms/vCloak'
  13. import { transformVHtml } from './transforms/vHtml'
  14. import { transformVText } from './transforms/vText'
  15. import { transformModel } from './transforms/vModel'
  16. import { transformOn } from './transforms/vOn'
  17. import { transformShow } from './transforms/vShow'
  18. import { TRANSITION, TRANSITION_GROUP } from './runtimeHelpers'
  19. const parserOptions = __BROWSER__ ? parserOptionsMinimal : parserOptionsStandard
  20. export function compile(
  21. template: string,
  22. options: CompilerOptions = {}
  23. ): CodegenResult {
  24. return baseCompile(template, {
  25. ...parserOptions,
  26. ...options,
  27. nodeTransforms: [transformStyle, ...(options.nodeTransforms || [])],
  28. directiveTransforms: {
  29. cloak: transformCloak,
  30. html: transformVHtml,
  31. text: transformVText,
  32. model: transformModel, // override compiler-core
  33. on: transformOn,
  34. show: transformShow,
  35. ...(options.directiveTransforms || {})
  36. },
  37. isBuiltInComponent: tag => {
  38. if (isBuiltInType(tag, `Transition`)) {
  39. return TRANSITION
  40. } else if (isBuiltInType(tag, `TransitionGroup`)) {
  41. return TRANSITION_GROUP
  42. }
  43. }
  44. })
  45. }
  46. export function parse(template: string, options: ParserOptions = {}) {
  47. return baseParse(template, {
  48. ...parserOptions,
  49. ...options
  50. })
  51. }
  52. export * from '@vue/compiler-core'