1
0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-02-21 07:29:37 +01:00

feat(ui-components): support packages with multiple module types (#5008)

This commit is contained in:
Xingwang Liao 2024-12-20 17:06:38 +08:00 committed by GitHub
parent 139861eb08
commit 5a91448653
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 37 additions and 14 deletions

@ -0,0 +1,5 @@
---
'@verdaccio/ui-components': minor
---
support packages with multiple module types

@ -17,7 +17,7 @@ export const Commonjs: Story = {
render: () => ( render: () => (
<SideBarTittle <SideBarTittle
isLatest={false} isLatest={false}
moduleType="commonjs" moduleTypes={['commonjs']}
packageName="jquery" packageName="jquery"
time="2012-12-31T06:54:14.275Z" time="2012-12-31T06:54:14.275Z"
version="1.0.0" version="1.0.0"
@ -30,7 +30,7 @@ export const ES6: Story = {
render: () => ( render: () => (
<SideBarTittle <SideBarTittle
isLatest={true} isLatest={true}
moduleType="module" moduleTypes={['module']}
packageName="react" packageName="react"
time="2012-12-31T06:54:14.275Z" time="2012-12-31T06:54:14.275Z"
version="14.0.0" version="14.0.0"
@ -38,13 +38,26 @@ export const ES6: Story = {
), ),
}; };
export const CommonjsAndES6: Story = {
name: 'CommonJS and ES6 package',
render: () => (
<SideBarTittle
isLatest={true}
moduleTypes={['commonjs', 'module']}
packageName="jquery"
time="2012-12-31T06:54:14.275Z"
version="1.0.0"
/>
),
};
export const Description: Story = { export const Description: Story = {
name: 'With description', name: 'With description',
render: () => ( render: () => (
<SideBarTittle <SideBarTittle
description="Storybook's CLI - easiest method of adding storybook to your projects" description="Storybook's CLI - easiest method of adding storybook to your projects"
isLatest={true} isLatest={true}
moduleType="module" moduleTypes={['module']}
packageName="storybook" packageName="storybook"
time="2012-12-31T06:54:14.275Z" time="2012-12-31T06:54:14.275Z"
version="14.0.0" version="14.0.0"
@ -59,7 +72,7 @@ export const WithTypes: Story = {
description="Storybook's CLI - easiest method of adding storybook to your projects" description="Storybook's CLI - easiest method of adding storybook to your projects"
hasTypes={true} hasTypes={true}
isLatest={true} isLatest={true}
moduleType="module" moduleTypes={['module']}
packageName="storybook" packageName="storybook"
time="2012-12-31T06:54:14.275Z" time="2012-12-31T06:54:14.275Z"
version="14.0.0" version="14.0.0"

@ -16,7 +16,7 @@ interface Props {
version: string; version: string;
isLatest: boolean; isLatest: boolean;
hasTypes?: boolean; hasTypes?: boolean;
moduleType: ModuleType | void; moduleTypes: ModuleType[];
time: string; time: string;
} }
@ -48,7 +48,7 @@ const DetailSidebarTitle: React.FC<Props> = ({
version, version,
isLatest, isLatest,
hasTypes, hasTypes,
moduleType, moduleTypes,
time, time,
}) => { }) => {
const { t } = useTranslation(); const { t } = useTranslation();
@ -63,7 +63,9 @@ const DetailSidebarTitle: React.FC<Props> = ({
<TypeScript /> <TypeScript />
</Icon> </Icon>
)} )}
<ModuleJS module={moduleType} /> {moduleTypes.map((module, index) => (
<ModuleJS key={index} module={module} />
))}
</> </>
</TitleWrapper> </TitleWrapper>
</StyledHeading> </StyledHeading>

@ -13,15 +13,18 @@ import Repository from '../../components/Repository';
import SideBarTitle from '../../components/SideBarTitle'; import SideBarTitle from '../../components/SideBarTitle';
import { useConfig } from '../../providers'; import { useConfig } from '../../providers';
import { useVersion } from '../../providers'; import { useVersion } from '../../providers';
import { PackageMetaInterface } from '../../types/packageMeta'; import { ModuleType, PackageMetaInterface } from '../../types/packageMeta';
const getModuleTypes = (manifest: PackageMetaInterface) => {
if (!manifest.latest) return [];
const moduleTypes: ModuleType[] = [manifest.latest.type || 'commonjs'];
const getModuleType = (manifest: PackageMetaInterface) => {
if (manifest.latest.main) { if (manifest.latest.main) {
return 'commonjs'; moduleTypes.push('commonjs');
} else if (manifest.latest.type) {
return manifest.latest.type;
} }
return;
return Array.from(new Set(moduleTypes));
}; };
const DetailSidebar: React.FC = () => { const DetailSidebar: React.FC = () => {
@ -40,7 +43,7 @@ const DetailSidebar: React.FC = () => {
description={packageMeta.latest?.description} description={packageMeta.latest?.description}
hasTypes={typeof packageMeta.latest?.types === 'string'} hasTypes={typeof packageMeta.latest?.types === 'string'}
isLatest={typeof packageVersion === 'undefined'} isLatest={typeof packageVersion === 'undefined'}
moduleType={getModuleType(packageMeta)} moduleTypes={getModuleTypes(packageMeta)}
packageName={packageName} packageName={packageName}
time={time} time={time}
version={version} version={version}