index.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import {
  2. baseCompile,
  3. baseParse,
  4. CompilerOptions,
  5. CodegenResult,
  6. ParserOptions,
  7. RootNode,
  8. noopDirectiveTransform,
  9. NodeTransform,
  10. DirectiveTransform
  11. } from '@vue/compiler-core'
  12. import { parserOptions } from './parserOptions'
  13. import { transformStyle } from './transforms/transformStyle'
  14. import { transformVHtml } from './transforms/vHtml'
  15. import { transformVText } from './transforms/vText'
  16. import { transformModel } from './transforms/vModel'
  17. import { transformOn } from './transforms/vOn'
  18. import { transformShow } from './transforms/vShow'
  19. import { transformTransition } from './transforms/Transition'
  20. import { stringifyStatic } from './transforms/stringifyStatic'
  21. import { ignoreSideEffectTags } from './transforms/ignoreSideEffectTags'
  22. import { extend } from '@vue/shared'
  23. export { parserOptions }
  24. export const DOMNodeTransforms: NodeTransform[] = [
  25. transformStyle,
  26. ...(__DEV__ ? [transformTransition] : [])
  27. ]
  28. export const DOMDirectiveTransforms: Record<string, DirectiveTransform> = {
  29. cloak: noopDirectiveTransform,
  30. html: transformVHtml,
  31. text: transformVText,
  32. model: transformModel, // override compiler-core
  33. on: transformOn, // override compiler-core
  34. show: transformShow
  35. }
  36. export function compile(
  37. template: string,
  38. options: CompilerOptions = {}
  39. ): CodegenResult {
  40. return baseCompile(
  41. template,
  42. extend({}, parserOptions, options, {
  43. nodeTransforms: [
  44. // ignore <script> and <tag>
  45. // this is not put inside DOMNodeTransforms because that list is used
  46. // by compiler-ssr to generate vnode fallback branches
  47. ignoreSideEffectTags,
  48. ...DOMNodeTransforms,
  49. ...(options.nodeTransforms || [])
  50. ],
  51. directiveTransforms: extend(
  52. {},
  53. DOMDirectiveTransforms,
  54. options.directiveTransforms || {}
  55. ),
  56. transformHoist: __BROWSER__ ? null : stringifyStatic
  57. })
  58. )
  59. }
  60. export function parse(template: string, options: ParserOptions = {}): RootNode {
  61. return baseParse(template, extend({}, parserOptions, options))
  62. }
  63. export * from './runtimeHelpers'
  64. export { transformStyle } from './transforms/transformStyle'
  65. export { createDOMCompilerError, DOMErrorCodes } from './errors'
  66. export * from '@vue/compiler-core'