From 95a05ef9ad779fbc18e20c79c3879b21c84a238b Mon Sep 17 00:00:00 2001 From: kanno <812137533@qq.com> Date: Wed, 19 Jul 2023 18:00:24 +0800 Subject: [PATCH] feat: visitor node bind extra info --- example/package.json | 1 + example/vite.config.js | 5 +++++ example/yarn.lock | 9 ++++++++- src/inject.ts | 15 ++++++++------- src/interface.ts | 1 + src/shared.ts | 5 ----- 6 files changed, 23 insertions(+), 13 deletions(-) diff --git a/example/package.json b/example/package.json index 7eda51d..9542b90 100644 --- a/example/package.json +++ b/example/package.json @@ -10,6 +10,7 @@ "unplugin-vue-components": "^0.24.1", "vite": "^4", "vite-plugin-cdn2": "file:../", + "vite-plugin-compression2":"^0.10.2", "vite-plugin-inspect": "^0.7.26" }, "dependencies": { diff --git a/example/vite.config.js b/example/vite.config.js index ae3d189..e7272d6 100644 --- a/example/vite.config.js +++ b/example/vite.config.js @@ -3,6 +3,7 @@ import vue from '@vitejs/plugin-vue' import { VarletUIResolver } from 'unplugin-vue-components/resolvers' import Components from 'unplugin-vue-components/vite' import { cdn } from 'vite-plugin-cdn2' +import { compression } from 'vite-plugin-compression2' import Inspect from 'vite-plugin-inspect' @@ -17,6 +18,10 @@ export default defineConfig(({ command }) => { }), apply: command }, + compression({ + algorithm: 'gzip', + threshold: 3 * 1024 + }), Inspect() ] } diff --git a/example/yarn.lock b/example/yarn.lock index a862646..06481db 100644 --- a/example/yarn.lock +++ b/example/yarn.lock @@ -1463,7 +1463,7 @@ util-deprecate@~1.0.1: integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== "vite-plugin-cdn2@file:..": - version "0.5.1" + version "0.6.0" dependencies: "@babel/core" "^7.22.5" "@rollup/pluginutils" "^5.0.2" @@ -1471,6 +1471,13 @@ util-deprecate@~1.0.1: happy-dom "^6.0.4" rs-module-lexer "^1.0.0" +vite-plugin-compression2@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/vite-plugin-compression2/-/vite-plugin-compression2-0.10.2.tgz#2a60564e50118c57eb7531d1c3088d35daac879d" + integrity sha512-PARrZawHL0uc6Dt788eUHZcd+MS6JB24YFN5ubfICyhCdrJS84W5GDtytzgC5z2VmCfDRorfdk5SXf+AqAX3Uw== + dependencies: + "@rollup/pluginutils" "^5.0.2" + vite-plugin-inspect@^0.7.26: version "0.7.26" resolved "https://registry.yarnpkg.com/vite-plugin-inspect/-/vite-plugin-inspect-0.7.26.tgz#5ec08a16a7b2198e708cfd56b39ce3cba8d0933a" diff --git a/src/inject.ts b/src/inject.ts index d0531ba..8821336 100644 --- a/src/inject.ts +++ b/src/inject.ts @@ -14,11 +14,12 @@ function makeURL(moduleMeta: IIFEModuleInfo, baseURL:string) { return new URL(`${packageName}@${version}/${relativeModule}`, baseURL).href } -function makeNode(packageName:string):ScriptNode | LinkNode { +function makeNode(moduleInfo:IIFEModuleInfo):ScriptNode | LinkNode { return { tag: 'link', url: new Set(), - name: packageName + name: moduleInfo.name, + extra: moduleInfo } } @@ -35,7 +36,7 @@ class InjectScript { const tags = [] this.modules.forEach((node) => { // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { tag, url, name: _, ...restProps } = node + const { tag, url, name: _, extra: __, ...restProps } = node if (url.size) { url.forEach((l) => { const element = this.window.document.createElement(tag) @@ -76,7 +77,7 @@ class InjectScript { const container:Map = new Map() const traverseModule = (moduleMeta: IIFEModuleInfo, moduleName: string) => { - const { spare, name: packageName } = moduleMeta + const { spare } = moduleMeta if (!spare) return if (Array.isArray(spare)) { for (const s of uniq(spare)) { @@ -91,20 +92,20 @@ class InjectScript { node.url.add(spare) return } - const node = makeNode(packageName) + const node = makeNode(moduleMeta) node.url.add(spare) node.tag = isScript(spare) container.set(mark, node) } modules.forEach((meta, moduleName) => { - const node = makeNode(meta.name) + const node = makeNode(meta) const url = makeURL(meta, baseURL) node.url.add(url) node.tag = isScript(url) const mark = `__${moduleName}__${node.tag}__` container.set(mark, node) - if (meta.spare) traverseModule(meta, moduleName) + if (meta.spare) traverseModule(meta, moduleName) }) return container } diff --git a/src/interface.ts b/src/interface.ts index 29a843a..d49a7a0 100644 --- a/src/interface.ts +++ b/src/interface.ts @@ -35,6 +35,7 @@ export interface Serialization { type?: string name: string tag: 'link' | 'script' + extra:Record } diff --git a/src/shared.ts b/src/shared.ts index cc4dd67..299378d 100644 --- a/src/shared.ts +++ b/src/shared.ts @@ -9,11 +9,6 @@ export function lookup(entry: string, target: string): string { return lookup(dir, target) } -// eslint-disable-next-line @typescript-eslint/ban-types -export function hasOwn(obj: T, key: keyof T | (string & {})): boolean { - return Object.hasOwnProperty.call(obj, key) -} - export function len>(source: T) { return source.length }