From 9b3de5eba39d192cad86d5333e62544857cc6c21 Mon Sep 17 00:00:00 2001 From: xion Date: Sun, 22 Dec 2024 14:49:48 +0800 Subject: [PATCH] feat: add app fof iife --- package.json | 4 +++- rollup.config.js | 17 +++++++++++++++++ src/app.ts | 12 ++++++++++++ src/web-env.ts | 2 ++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/app.ts diff --git a/package.json b/package.json index 864b6d5..0d728de 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kevisual/store", - "version": "0.0.1-alpha.7", + "version": "0.0.1-alpha.8", "main": "dist/store.js", "module": "dist/store.js", "types": "dist/store.d.ts", @@ -69,6 +69,8 @@ } }, "dependencies": { + "@kevisual/router": "0.0.6-alpha-4", + "@rollup/plugin-terser": "^0.4.4", "eventemitter3": "^5.0.1", "path-to-regexp": "^8.2.0" } diff --git a/rollup.config.js b/rollup.config.js index 7443441..6a3536b 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -4,6 +4,7 @@ import typescript from '@rollup/plugin-typescript'; import resolve from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import { dts } from 'rollup-plugin-dts'; +import terser from '@rollup/plugin-terser'; /** * @type {import('rollup').RollupOptions} @@ -77,4 +78,20 @@ export default [ }, plugins: [dts()], }, + { + input: 'src/app.ts', + output: { + file: 'dist/app.js', + format: 'iife', + }, + plugins: [resolve({ browser: true }), commonjs(), typescript(), terser()], + }, + { + input: 'src/app.ts', + output: { + file: 'dist/app.d.ts', + format: 'es', + }, + plugins: [dts()], + }, ]; diff --git a/src/app.ts b/src/app.ts new file mode 100644 index 0000000..ef8d387 --- /dev/null +++ b/src/app.ts @@ -0,0 +1,12 @@ +// 当前的功能,把所有的模块注入到windows对象当中 +import { useConfigKey, useContextKey } from './web-env.ts'; +import { QueryRouterServer } from '@kevisual/router/browser'; + +// bind to window, 必须要的获取全局的环境变量 +window.useConfigKey = useConfigKey; +window.useContextKey = useContextKey; +window.QueryRouterServer = QueryRouterServer; + +// bind to window, 获取路由对象 +useContextKey('app', () => new QueryRouterServer()); + diff --git a/src/web-env.ts b/src/web-env.ts index fcb5c0a..1841175 100644 --- a/src/web-env.ts +++ b/src/web-env.ts @@ -4,6 +4,7 @@ type GlobalEnv = { name?: string; [key: string]: any; }; +// 从window对象中获取全局的环境变量,如果没有则初始化一个 export const useEnv = (initEnv?: GlobalEnv, initKey = 'config') => { const env: GlobalEnv = (window as any)[initKey]; const _env = env || initEnv; @@ -17,6 +18,7 @@ export const useEnv = (initEnv?: GlobalEnv, initKey = 'config') => { return window[initKey] as GlobalEnv; }; +// 从全局环境变量中获取指定的key值,如果没有则初始化一个, key不存在,返回Env对象 export const useEnvKey = (key: string, init?: () => T | null, initKey = 'config'): T => { const _env = useEnv({}, initKey); if (key && _env[key]) {