]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix: playground
author三咲智子 Kevin Deng <sxzz@sxzz.moe>
Tue, 28 Nov 2023 18:38:01 +0000 (02:38 +0800)
committer三咲智子 Kevin Deng <sxzz@sxzz.moe>
Tue, 28 Nov 2023 18:38:01 +0000 (02:38 +0800)
package.json
packages/compiler-core/src/index.ts
packages/compiler-sfc/src/compileScript.ts
packages/compiler-vapor/src/errors.ts
packages/compiler-vapor/src/transform.ts
packages/runtime-vapor/src/index.ts
packages/runtime-vapor/src/scheduler.ts
playground/src/App-root.vue
playground/src/App.vue
playground/vite.config.ts

index 27814f80d2808e3a6870baad30b6855964d082f1..b10819ba76c82a12759a62a4d4df95f08cad6bf8 100644 (file)
@@ -31,7 +31,7 @@
     "dev-sfc-serve": "vite packages/sfc-playground --host",
     "dev-sfc-run": "run-p \"dev compiler-sfc -f esm-browser\" \"dev vue -if esm-bundler-runtime\" \"dev vue -ipf esm-browser-runtime\" \"dev server-renderer -if esm-bundler\" dev-sfc-serve",
     "dev-vapor": "run-s dev-prepare-cjs dev-vapor-run",
-    "dev-vapor-run": "run-p \"dev vue-vapor -if esm-bundler-runtime\" \"dev vue-vapor -ipf esm-browser-runtime\" dev-vapor-serve",
+    "dev-vapor-run": "run-p \"dev vue-vapor -if esm-bundler-runtime\" \"dev compiler-vapor -ipf esm-bundler\" dev-vapor-serve",
     "dev-vapor-serve": "pnpm -C playground run dev",
     "serve": "serve",
     "open": "open http://localhost:3000/packages/template-explorer/local.html",
index 8aaa0d77e28582b03ecd303c73630789877042ff..4898a181dfcfad8c42defd4d6929ef27a07a8577 100644 (file)
@@ -25,8 +25,6 @@ export { generate, type CodegenContext, type CodegenResult } from './codegen'
 export {
   ErrorCodes,
   createCompilerError,
-  defaultOnError,
-  defaultOnWarn,
   type CoreCompilerError,
   type CompilerError
 } from './errors'
index 9a05d3b327f80c33c5b87ee13d238c1d99d7e607..58211cd58cfe22d887a111d5dcafd2050b3c9fb6 100644 (file)
@@ -368,7 +368,8 @@ export function compileScript(
   const vueImportAliases: Record<string, string> = {}
   for (const key in ctx.userImports) {
     const { source, imported, local } = ctx.userImports[key]
-    if (source === 'vue') vueImportAliases[imported] = local
+    if (['vue', 'vue/vapor'].includes(source))
+      vueImportAliases[imported] = local
   }
 
   // 2.1 process normal <script> body
@@ -744,7 +745,7 @@ export function compileScript(
     ctx.bindingMetadata[key] =
       imported === '*' ||
       (imported === 'default' && source.endsWith('.vue')) ||
-      source === 'vue'
+      ['vue', 'vue/vapor'].includes(source)
         ? BindingTypes.SETUP_CONST
         : BindingTypes.SETUP_MAYBE_REF
   }
@@ -855,7 +856,7 @@ export function compileScript(
     for (const key in allBindings) {
       if (
         allBindings[key] === true &&
-        ctx.userImports[key].source !== 'vue' &&
+        ['vue', 'vue/vapor'].includes(ctx.userImports[key].source) &&
         !ctx.userImports[key].source.endsWith('.vue')
       ) {
         // generate getter for import bindings
index 0f343e7032ab64b9ec3342d02379c1bb53863b85..f89c23297fb9f49de46bc91178eb8bad363ca17b 100644 (file)
@@ -1,10 +1,14 @@
-export {
-  createCompilerError,
-  defaultOnError,
-  defaultOnWarn,
-  type CoreCompilerError,
-  type CompilerError,
-} from '@vue/compiler-dom'
+import { CompilerError } from '@vue/compiler-dom'
+
+export { createCompilerError } from '@vue/compiler-dom'
+
+export function defaultOnError(error: CompilerError) {
+  throw error
+}
+
+export function defaultOnWarn(msg: CompilerError) {
+  __DEV__ && console.warn(`[Vue warn] ${msg.message}`)
+}
 
 export const enum ErrorCodes {
   // transform errors
index 7d38676c810ac5e7060e5a7a6d749a00c0c17a8b..03ff5b4f71fb8831d4272b8eb6b8048ac21bdf51 100644 (file)
@@ -1,14 +1,14 @@
-import {
+import type {
   NodeTypes,
-  type RootNode,
-  type Node,
-  type TemplateChildNode,
-  type ElementNode,
-  type AttributeNode,
-  type InterpolationNode,
-  type TransformOptions,
-  type DirectiveNode,
-  type ExpressionNode,
+  RootNode,
+  Node,
+  TemplateChildNode,
+  ElementNode,
+  AttributeNode,
+  InterpolationNode,
+  TransformOptions,
+  DirectiveNode,
+  ExpressionNode,
 } from '@vue/compiler-dom'
 import {
   type OperationNode,
@@ -361,7 +361,8 @@ function transformProp(
     case 'bind': {
       if (
         !exp ||
-        (exp.type === NodeTypes.SIMPLE_EXPRESSION! && !exp.content.trim())
+        (exp.type === (4 satisfies NodeTypes.SIMPLE_EXPRESSION) &&
+          !exp.content.trim())
       ) {
         ctx.options.onError!(
           createCompilerError(ErrorCodes.VAPOR_BIND_NO_EXPRESSION, loc),
index 8c315ecab82cd95bda3e05d30e6113769e36a7a9..9e47af592c5e629544ea1f894acd383c2da23d19 100644 (file)
@@ -6,6 +6,7 @@ export {
   reactive,
   ref,
   readonly,
+  computed,
   // utilities
   unref,
   proxyRefs,
@@ -26,7 +27,6 @@ export {
   markRaw,
   toRaw,
   // effect
-  effect,
   stop,
   ReactiveEffect,
   // effect scope
@@ -35,7 +35,7 @@ export {
   getCurrentScope,
   onScopeDispose
 } from '@vue/reactivity'
+export { effect } from './scheduler'
 export * from './on'
 export * from './render'
 export * from './template'
-export * from './scheduler'
index 1af662e2577cab57a71da6502e12e04845a4a622..ec9535cabd6eba6212ab0defb3ea191eca0c9360 100644 (file)
@@ -4,7 +4,7 @@ const p = Promise.resolve()
 
 let queued: any[] | undefined
 
-const queue = (fn: any) => {
+function queue(fn: any) {
   if (!queued) {
     queued = [fn]
     p.then(flush)
@@ -22,7 +22,7 @@ function flush() {
 
 export const nextTick = (fn: any) => p.then(fn)
 
-export const effect = (fn: any) => {
+export function effect(fn: any) {
   let run: () => void
   const e = new ReactiveEffect(fn, () => queue(run))
   run = e.run.bind(e)
index 74531c510c7b691399a05398b0c1fcd899661175..0d5def4bd174b24f5aa82cebc326a226778174f7 100644 (file)
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { ref } from 'vue'
+import { ref } from 'vue/vapor'
 
 const count = ref(1)
 
index d153fd5040e0d5e4c67db56a12d5524df1f33768..2ac090327f2b135ef2a3ccb2dd4433ec1b6aa900 100644 (file)
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { ref, computed } from 'vue'
+import { ref, computed } from 'vue/vapor'
 
 const count = ref(1)
 const double = computed(() => count.value * 2)
index db2fba3a16a9a34ea9f36525210d8cf716fbccb3..dd2e6d8e9b6b7baa189e7ca45641dcba12c573fc 100644 (file)
@@ -1,20 +1,20 @@
 import { defineConfig } from 'vite'
 import Vue from '@vitejs/plugin-vue'
 import Inspect from 'vite-plugin-inspect'
-import * as CompilerVapor from '../packages/compiler-vapor/src'
+// @ts-ignore
+import * as CompilerVapor from '../packages/compiler-vapor/dist/compiler-vapor.esm-bundler.prod.js'
+
+const vue = Vue({
+  isProduction: true,
+  template: {
+    compiler: CompilerVapor
+  }
+})
 
 export default defineConfig({
   build: {
     target: 'esnext'
   },
   clearScreen: false,
-  plugins: [
-    Vue({
-      isProduction: true,
-      template: {
-        compiler: CompilerVapor
-      }
-    }),
-    Inspect()
-  ]
+  plugins: [vue, Inspect()]
 })