Skip to content

feat: export configContentInject and formatToken #8197

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

wzc520pyfm
Copy link
Contributor

@wzc520pyfm wzc520pyfm commented May 24, 2025

我在基于antdv封装上层组件时,遇到如下两个问题:

  1. 我无法获取到useConfigContextInject,除非使用esm导入:
import { useConfigContextInject } from 'ant-design-vue/es/config-provider/context';
const { getPrefixCls, direction, csp, iconPrefixCls, theme } = useConfigContextInject();

他在esm下工作良好,但当打包umd使用cdn导入时,全局变量antd并没有暴露useConfigContextInject,我未寻找到其他获取useConfigContextInject的方式,因此希望可以antdv可以对外暴露useConfigContextInject。我尝试的暴露方式是通过ConfigProvider组件:

const { getPrefixCls, direction, csp, iconPrefixCls, theme } = ConfigProvider.useConfigContextInject();

该api暴露方式和antd基本一致:
image

  1. 当在外部基于Derivative (designer) Token 生成 Alias (developer) Token时,需要借助antdv内部的formatToken方法,此方法涉及内容较多,大量拷贝至外部应该不是很好的方式,它同样可以在esm下导入,但umd下需要antdv对外暴露:
import formatToken from 'ant-design-vue/es/theme/util/alias';

formatToken应该可以作为theme的工具方法,和useToken一起暴露给外部
(components/theme/index.ts):

import formatToken from './util/alias';

export default {
  useToken,
+  formatToken,
  defaultAlgorithm,
  darkAlgorithm,
  compactAlgorithm,
};

Use:

import { theme } from 'ant-design-vue';
const AliasToken = theme.formatToken(DerivativeToken);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant