[Bug / DX]: Deep imports for generateConfig are incompatible with pnpm and break module resolution
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 58/100
- Tipo de issue
- Funcionalidade
- Clareza
- Claramente especificada
- Status de atividade
- Estagnada
- Stack de tecnologia
- react, typescript
- Domínio
- api, developer-experience
Direção de pesquisa
Comece no index.tsx principal e reproduza a falha de deep import em um workspace do pnpm com shamefully-hoist desabilitado. Está concluído quando os helpers de generateConfig, incluindo momentGenerateConfig, puderem ser importados pela API de nível superior de @rc-component/picker sem depender de deep imports.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Bug Report & DX Improvement
When using @rc-component/picker within a pnpm monorepo, the library fails at runtime with the error TypeError: generateConfig.getNow is not a function.
This occurs because the current API design requires consumers to use deep imports to access the necessary generateConfig helpers (e.g., import momentGenerateConfig from 'rc-picker/lib/generate/moment').
These deep imports are not robust and fail to resolve correctly in a strict pnpm environment due to its symlinked node_modules architecture. The bundler cannot find the module, the generateConfig prop becomes undefined, and the component crashes internally.
This issue forces users to enable shamefully-hoist=true in their .npmrc file as a workaround, which negates many of the benefits of using pnpm.
To Reproduce
Set up a pnpm workspace with a host application and a separate library package.
In the library package, import and use an antd DatePicker, which requires passing the generateConfig prop.
Import the required helper via a deep import: import momentGenerateConfig from 'rc-picker/lib/generate/moment';.
Ensure shamefully-hoist is disabled (pnpm's default).
Attempt to run the application. The build or runtime will fail because the deep import cannot be resolved.
Expected behavior
Essential helpers like generateConfig should be part of the library's public API and exportable from the main entry point, eliminating the need for fragile deep imports. This would ensure compatibility with modern, strict package managers like pnpm out of the box.
Proposed Solution & Pull Request
To solve this and improve the developer experience, the generateConfig helpers should be exported from the main index.tsx file.
This allows developers to switch from the brittle deep import:
// Old, fragile way
import momentGenerateConfig from 'rc-picker/lib/generate/moment';
To a robust, top-level import that works with any package manager:
// New, robust way
import { momentGenerateConfig } from '@rc-component/picker';
- Linguagem predominante
- TypeScript
- Estrelas
- 304
- Forks
- 345
- Merge médio
- 19h 37min
- PRs com merge (30d)
- 6
Preparar o ambiente
Ainda não verificamos os arquivos de configuração deste projeto. Comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de react-component/picker
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 48/100
react-component/picker#956 · 1 comentário · 1 reação ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 30/100
react-component/picker#955 · 1 comentário · 1 reação ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
react-component/picker#946 ·
-
需要RangePicker组件中增加aria属性Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
react-component/picker#939 ·
-
需求一个能手动控制选完时间后,标签是否滑动到顶的配置Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
react-component/picker#937 · 1 comentário ·
Todas as issues de react-component/picker
Issues semelhantes
-
refactor
Dificuldade 2/5 Meio dia Facilidade para iniciantes 84/100
Mantenedores costumam responder em até 5 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
OHDSI/Data2Evidence#3450 ·
Mantenedores costumam responder em até 2 dias
-
e2e-failure ready-to-code
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
redhat-developer/rhdh-plugin-export-overlays#4011 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
automation missing-model model-sync provider:ofox
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
anomalyco/models.dev#8421 ·
Mantenedores costumam responder em até 1 dia
-
SlackAdapter and TelegramAdapter are not assignable to Adapter under exactOptionalPropertyTypesAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia