
Security News
The AI Industry Is Betting on Open Weights
An open letter signed by 50 companies, from NVIDIA and Microsoft to Mistral and Hugging Face, urges Washington not to restrict open weight AI.
share-light
Advanced tools
轻量级的分享 SDK。支持以下渠道
可直接引入,也可异步加载。
安装:
pnpm add share-light
main.ts 中:
import { initShare, openShareUI } from 'share-light';
initShare({
showToast: (message) => {
Toast.show(message);
},
showConfirmDialog: Dialog.confirm,
title: 'Better Share',
configWx,
});
openShareUI();
也可异步加载,并使用其提供的全局变量 shareLightSDK,性能更佳。
const SHARE_LIGHT_SCRIPT = 'https://image-1251917893.file.myqcloud.com/igame/npm/share-light/share-light%400.0.5.prod.js';
function init(
func: 'initShare' | 'hideShareBtn' | 'openShareUI' | 'setupWzydShare',
options?: ShareObject | string,
) {
return new Promise((resolve) => {
const innerCall = () => window.shareLightSDK?.[func]?.(options);
if (inited && window.shareLightSDK) {
resolve(innerCall());
return;
}
loader(SHARE_LIGHT_SCRIPT, () => {
inited = true;
resolve(innerCall());
return;
});
});
}
export function initShare(options: ShareObject) {
return init('initShare', {
hideShareType: getHideShareType(),
showToast: (message) => {
Toast.show(message);
},
showConfirmDialog: Dialog.confirm,
configWx,
// 业务如果需要,自行传入 postGetMiniProgramOpenLink,减小公共代码体积
// 以下代码为示例
// postGetMiniProgramOpenLink: (shareObject) => {
// const data = (shareObject.path || '').split('?');
// return postGetMiniProgramOpenLink({
// adcfg: {},
// appid: getJumpMiniProgramAppid(shareObject.gid),
// path: data.length > 0 ? data[0] : '',
// param_data: data.length > 1 ? data[1] : '',
// jump_type: JUMP_TYPES.CUSTOM_NO_ENCODE,
// });
// },
...options,
});
}
export function hideShareBtn() {
return init('hideShareBtn');
}
export function openShareUI() {
return init('openShareUI');
}
export function setupWzydShare(url: string) {
return init('setupWzydShare', url);
}
export const SHARE_TYPE_MAP = {
Wechat: 1,
Timeline: 2,
QQ: 3,
QZone: 4,
} as const;
export type ShareType = typeof SHARE_TYPE_MAP[keyof typeof SHARE_TYPE_MAP];
export interface ShareObject {
title?: string;
desc?: string;
icon?: string;
link?: string;
callback?: (_shareType?: ShareType) => {};
path?: string | null;
type?: string | number | null;
miniprogram_link?: string;
miniprogramAppId?: string;
gid?: number;
forceHistoryMode?: boolean;
isWzydShare?: boolean;
wzydShareText?: string;
// 要隐藏的分享类型,游戏内可用,比如传入 [1],即隐藏微信好友分享
hideShareType?: Array<ShareType>;
tipMap?: {
copyTextSuccess?: string;
copyTextFail?: string;
dialogTitle?: string;
dialogMessage?: string;
dialogConfirmButton?: string;
};
showToast?: (message: string) => any;
showConfirmDialog?: (options: {
title?: string;
message?: string;
confirmButtonText?: string;
showCancelButton?: boolean;
}) => any;
postGetMiniProgramOpenLink?: (options: ShareObject) => Promise<any>;
configWx?: (apiList: string[], openTagList?: string[]) => Promise<any>;
}
export interface ShareUIObject {
initCommShareUI?: (callbackName: string) => void;
initCommShareTip?: () => void;
showCommShareUI?: () => void;
showCommShareTip?: () => void;
openShareUI?: () => void;
}
默认分享图片和提示文案等,可通过 initShare 参数覆盖。
export const DEFAULT_SHARE_ICON = 'http://ossweb-img.qq.com/images/pmd/igameapp/logo/log_igame_3.0.png';
export const DEFAULT_TIP_MAP = {
copyTextSuccess: '复制链接成功,快去粘贴吧!',
copyTextFail: '该浏览器不支持自动复制',
dialogTitle: '温馨提示',
dialogMessage: '请复制链接到微信或手机QQ内打开参与活动',
dialogConfirmButton: '我知道了',
};
jsapi,体积太大,文件太多,可读性、可维护性太差。本来就是非常简单的东西,加载sdk、调用全局变量即可,现在变得非常麻烦shareObject、shareUiObject 没有类型shareType 没有类型,都是1234的魔法字符串initShare 没有类型当前 pmd 体积:
把分享重定向到一个伪文件,即去掉分享后的 pmd 体积:
可见分享模块的体积已经达到了 97.49KB,亟需优化。
光 jsapi 就有 58.34KB。
jsapi其他:
Toast, Dialog 改为外部传入,方便切换组件库
Toast.show => showToastDialog.confirm => showConfirmDialogtoast 和 dialog 文案支持自定义postGetMiniProgramOpenLink 改为外部传入,可以充分自定义。传入的时候,就应该封装好参数,share 内部不关心。另外,这里真的需要这么做吗,很多业务已经改成明文 scheme 了,根本不用传了configWx 改为外部传入,适应任意业务hideShareType 参数即可,并把之前内部的账号判断移出 share 核心逻辑getEnvVersion 去掉,没找到需要它的地方isTestEnv,同样去掉减少 85KB。
之前:
之后:
更新为异步后,每次修改 share-light,需要:
share-light 的 npm 包build 后,将构建产物 index.prod.js 上传到 COS 上,并重命名为 share-light@version.prod.jspmd-widget/share-v2 中的 script 链接FAQs
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
An open letter signed by 50 companies, from NVIDIA and Microsoft to Mistral and Hugging Face, urges Washington not to restrict open weight AI.

Security News
/Research
A fake corepack.org site is impersonating the Node.js tool and delivers an infostealer and proxyware to developers who download it.

Research
/Security News
A large-scale campaign abused GitHub Actions in compromised repositories to exploit CVE-2026-41940 in cPanel and WHM and steal server credentials.