[Feature] Support upstreaming / telemetry on packageExtensions
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 8.1k
- Forks
- 1.3k
- PR merge metrics
- No merged PRs in 30d
Description
- I'd be willing to implement this feature (contributing guide)
- This feature is important to have in this repository; a contrib plugin wouldn't do
Describe the user story
As a developer, I often want to just install packages, but very often (too often), package creators do not fill their peer dependencies correctly. This invariably leads to huge .yarnrc.yml where we have to add peer dependencies to packages to avoid yarn YN0002 warnings.
Typical .yarnrc/yml:
packageExtensions:
"@chakra-ui/accordion@1.3.6":
peerDependencies:
framer-motion: "*"
"@chakra-ui/anatomy@1.0.0":
peerDependencies:
"@chakra-ui/system": "*"
"@chakra-ui/skeleton@1.1.18":
peerDependencies:
"@chakra-ui/theme": "*"
"@emotion/react": "*"
"@emotion/styled": "*"
"@chakra-ui/switch@1.2.9":
peerDependencies:
framer-motion: "*"
"@endemolshinegroup/cosmiconfig-typescript-loader@3.0.2":
peerDependencies:
typescript: "*"
"@graphql-codegen/cli@1.21.4":
peerDependencies:
typescript: "*"
"@storybook/core-server@*":
peerDependencies:
"@babel/core": "*"
"@storybook/core@*":
peerDependencies:
"@babel/core": "*"
webpack: "*"
"@storybook/store@*":
peerDependencies:
"react": "*"
"react-dom": "*"
"@storybook/csf-tools@*":
peerDependencies:
"@babel/core": "*"
"@parcel/packager-html@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/plugin@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/packager-svg@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/types@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/bundler-default@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/compressor-raw@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/namer-default@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/optimizer-cssnano@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/optimizer-htmlnano@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/optimizer-image@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/optimizer-svgo@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/optimizer-terser@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/packager-css@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/packager-js@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/packager-raw@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/reporter-dev-server@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/resolver-default@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/runtime-browser-hmr@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/runtime-js@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/runtime-react-refresh@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/runtime-service-worker@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/transformer-babel@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/transformer-css@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/transformer-html@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/transformer-image@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/transformer-js@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/transformer-json@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/transformer-postcss@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/transformer-posthtml@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/transformer-raw@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/transformer-react-refresh-wrap@*":
peerDependencies:
"@parcel/core": "*"
"@parcel/transformer-svg@*":
peerDependencies:
"@parcel/core": "*"
eslint-config-airbnb-typescript@12.3.1:
peerDependencies:
eslint: "*"
eslint-plugin-import: "*"
eslint-plugin-jsx-a11y: "*"
eslint-plugin-react: "*"
eslint-plugin-react-hooks: "*"
graphql-config@*:
peerDependencies:
typescript: "*"
apollo-server-micro@*:
peerDependencies:
graphql: "*"
next@*:
peerDependencies:
"@babel/core": "*"
react-dev-utils@11.0.4:
peerDependencies:
typescript: "*"
webpack: "*"
styled-jsx@*:
peerDependencies:
"@babel/core": "*"
next-auth@*:
peerDependencies:
"@prisma/client": "*"
Describe the solution you'd like
Maybe there could be a way for yarn to add some telemetry to this part of the code, and have a central source of truth, to let package creators know about their bad peerDeps ?
Opening issues automatically on repos sounds a bit difficult, but just have a central place to report it at least would be helpful ?
Describe the drawbacks of your solution
Need to maintain this solution.
Describe alternatives you've considered
I stopped bothering enough to open issues every time I have issues with peerDeps in packages I use.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no source files or tests. Start by tracing packageExtensions handling and review the linked contributing guide; define how reports would be collected and where a central source of truth would live. Done would mean a documented telemetry path that reports suspected peer-dependency problems to package creators.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- node.js, typescript
- Domain
- developer-experience, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100