]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
feat(ref-transform): auto infer parser plugins
authorEvan You <yyx990803@gmail.com>
Mon, 23 Aug 2021 16:20:53 +0000 (12:20 -0400)
committerEvan You <yyx990803@gmail.com>
Mon, 23 Aug 2021 16:20:53 +0000 (12:20 -0400)
packages/ref-transform/README.md
packages/ref-transform/package.json
packages/ref-transform/src/index.ts

index 45422555563838be3d41d30286d0eef5c0f2ef18..e5ba22fb2bf75464657b36b404f1db1ae70654e3 100644 (file)
@@ -60,7 +60,11 @@ const {
 } = transform(src, {
   filename: 'foo.ts',
   sourceMap: true,
-  parserPlugins: ['typescript']
+
+  // @babel/parser plugins to enable.
+  // 'typescript' and 'jsx' will be auto-inferred from filename if provided,
+  // so in most cases explicit parserPlugins are not necessary
+  parserPlugins: [/* ... */]
 })
 ```
 
index c6c4e1eb4ae5d46d64c4a3f4629695eb5d172240..0cebe3b35fe1ce820b9dfd56cff6bed98fa19666 100644 (file)
   },
   "homepage": "https://github.com/vuejs/vue-next/tree/dev/packages/ref-transform#readme",
   "dependencies": {
+    "@babel/parser": "^7.15.0",
     "@vue/compiler-core": "3.2.4",
     "@vue/shared": "3.2.4",
-    "@babel/parser": "^7.15.0",
-    "estree-walker": "^2.0.2"
+    "estree-walker": "^2.0.2",
+    "magic-string": "^0.25.7"
   },
   "devDependencies": {
     "@babel/core": "^7.15.0"
index 218427466811befdfb2d2dba50bd2e8890a3f721..73c5b086a77e323abfee3a68bace041f65631242 100644 (file)
@@ -63,9 +63,19 @@ export function transform(
     importHelpersFrom = 'vue'
   }: RefTransformOptions = {}
 ): RefTransformResults {
+  const plugins: ParserPlugin[] = parserPlugins || []
+  if (filename) {
+    if (/\.tsx?$/.test(filename)) {
+      plugins.push('typescript')
+    }
+    if (filename.endsWith('x')) {
+      plugins.push('jsx')
+    }
+  }
+
   const ast = parse(src, {
     sourceType: 'module',
-    plugins: [...babelParserDefaultPlugins, ...(parserPlugins || [])]
+    plugins: [...new Set([...babelParserDefaultPlugins, ...plugins])]
   })
   const s = new MagicString(src)
   const res = transformAST(ast, s)