diff --git a/packages/uni-cli-shared/src/index.ts b/packages/uni-cli-shared/src/index.ts index d26584a449c8952c3f929c95a5bcf46f72426f89..09f2654dece16914fb0b6defe0756b67add72ff9 100644 --- a/packages/uni-cli-shared/src/index.ts +++ b/packages/uni-cli-shared/src/index.ts @@ -15,6 +15,8 @@ export * from './preprocess' export * from './postcss' export * from './filter' export * from './esbuild' + +export * from './vue/transforms' export { M } from './messages' export * from './exports' diff --git a/packages/uni-cli-shared/src/mp/template.ts b/packages/uni-cli-shared/src/mp/template.ts index 5d1686f5225dc2eb7ec92cd8aef20eb1be0d577a..f01b9a74f950d983ee29681e53cbc5c38c3e2c9d 100644 --- a/packages/uni-cli-shared/src/mp/template.ts +++ b/packages/uni-cli-shared/src/mp/template.ts @@ -1,16 +1,6 @@ import path from 'path' import { EmittedAsset } from 'rollup' -import { isComponentTag, LINEFEED } from '@dcloudio/uni-shared' -import { - createSimpleExpression, - ElementTypes, - isCoreComponent, - locStub, - NodeTypes, - RootNode, - TemplateChildNode, - TransformContext, -} from '@vue/compiler-core' +import { LINEFEED } from '@dcloudio/uni-shared' import { normalizeMiniProgramFilename } from '../utils' export interface MiniProgramCompilerOptions { @@ -110,30 +100,3 @@ export function addMiniProgramTemplateFilter( templateFiltersCache.set(filename, [filter]) } } - -export function addComponentBindLink( - node: RootNode | TemplateChildNode, - context: TransformContext -) { - if ( - node.type === NodeTypes.ELEMENT && - node.tagType === ElementTypes.COMPONENT - ) { - const { tag } = node - if ( - isComponentTag(tag) || - isCoreComponent(tag) || - context.isBuiltInComponent(tag) - ) { - return - } - node.props.push({ - type: NodeTypes.DIRECTIVE, - name: 'on', - modifiers: [], - loc: locStub, - arg: createSimpleExpression('__l', true), - exp: createSimpleExpression('__l', true), - }) - } -} diff --git a/packages/uni-cli-shared/src/vue/transforms/index.ts b/packages/uni-cli-shared/src/vue/transforms/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..27ab8ef2a7236906b94abd6497b97daef5e69341 --- /dev/null +++ b/packages/uni-cli-shared/src/vue/transforms/index.ts @@ -0,0 +1,2 @@ +export * from './transformComponent' +export * from './transformPageHead' diff --git a/packages/uni-cli-shared/src/vue/transforms/transformComponent.ts b/packages/uni-cli-shared/src/vue/transforms/transformComponent.ts new file mode 100644 index 0000000000000000000000000000000000000000..65cb7c110fe36f3e29da776770987a08fbcc3a7f --- /dev/null +++ b/packages/uni-cli-shared/src/vue/transforms/transformComponent.ts @@ -0,0 +1,38 @@ +import { isComponentTag } from '@dcloudio/uni-shared' +import { + createSimpleExpression, + ElementTypes, + isCoreComponent, + locStub, + NodeTypes, + RootNode, + TemplateChildNode, + TransformContext, +} from '@vue/compiler-core' + +export function addComponentBindLink( + node: RootNode | TemplateChildNode, + context: TransformContext +) { + if ( + node.type === NodeTypes.ELEMENT && + node.tagType === ElementTypes.COMPONENT + ) { + const { tag } = node + if ( + isComponentTag(tag) || + isCoreComponent(tag) || + context.isBuiltInComponent(tag) + ) { + return + } + node.props.push({ + type: NodeTypes.DIRECTIVE, + name: 'on', + modifiers: [], + loc: locStub, + arg: createSimpleExpression('__l', true), + exp: createSimpleExpression('__l', true), + }) + } +} diff --git a/packages/uni-cli-shared/src/vue/transforms/transformPageHead.ts b/packages/uni-cli-shared/src/vue/transforms/transformPageHead.ts new file mode 100644 index 0000000000000000000000000000000000000000..f18a4c19175f94f85a39cf5a2846eb31c062dd77 --- /dev/null +++ b/packages/uni-cli-shared/src/vue/transforms/transformPageHead.ts @@ -0,0 +1,5 @@ +import { NodeTransform } from '@vue/compiler-core' + +export const transformPageHead: NodeTransform = (_node, _context) => { + // 发现是page-meta下的page-head,直接remove该节点 +} diff --git a/packages/uni-h5-vite/src/plugin/index.ts b/packages/uni-h5-vite/src/plugin/index.ts index 0448e836f77f5fc6a2fb6c81b70eecef9d9e32a4..4577d6f124da5477b50bd404ef58ff258ee481ce 100644 --- a/packages/uni-h5-vite/src/plugin/index.ts +++ b/packages/uni-h5-vite/src/plugin/index.ts @@ -13,6 +13,7 @@ import { isSsr } from '../utils' import { esbuildPrePlugin } from './esbuild/esbuildPrePlugin' import { external } from './configureServer/ssr' import { createConfigureServer } from './configureServer' +import { transformPageHead } from './transforms/transformPageHead' export const UniH5Plugin: UniVitePlugin = { name: 'vite:uni-h5', @@ -26,6 +27,7 @@ export const UniH5Plugin: UniVitePlugin = { compilerOptions: { isNativeTag: isH5NativeTag, isCustomElement: isH5CustomElement, + nodeTransforms: [transformPageHead], }, }, config(config, env) { diff --git a/packages/uni-h5-vite/src/plugin/transforms/transformPageHead.ts b/packages/uni-h5-vite/src/plugin/transforms/transformPageHead.ts new file mode 100644 index 0000000000000000000000000000000000000000..f0769c4677c008e03200de5cfcdaccc26afa35cf --- /dev/null +++ b/packages/uni-h5-vite/src/plugin/transforms/transformPageHead.ts @@ -0,0 +1,7 @@ +import { NodeTransform } from '@vue/compiler-core' + +export const transformPageHead: NodeTransform = (node, context) => { + if (!context.ssr) { + return + } +}