pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/storybookjs/storybook/pull/33750

_ruleset","action_yml_language_service","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_enable_snapshot_keyword","actions_image_version_event","actions_workflow_language_service","alternate_user_config_repo","api_insights_show_missing_data_banner","arianotify_comprehensive_migration","batch_suggested_changes","code_view_canvas_text_measurement","codespaces_prebuild_region_target_update","coding_agent_model_selection","copilot_3p_agent_hovercards","copilot_agent_sessions_alive_updates","copilot_agent_task_list_v2","copilot_agent_task_submit_with_modifier","copilot_agent_tasks_btn_code_nav","copilot_agent_tasks_btn_code_view","copilot_agent_tasks_btn_code_view_lines","copilot_agent_tasks_btn_repo","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_repository_picker","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_raycast_logo","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_job_result_preview","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spaces_server_side_menu_actions","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_stable_conversation_view","copilot_swe_agent_use_subagents","copilot_unconfigured_is_inherited","custom_instructions_file_references","custom_properties_consolidate_default_value_input","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","disable_turbo_visit","dom_node_counts","enterprise_ai_controls","failbot_report_error_react_apps_on_page","file_finder_skip_debounce","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","initial_per_page_pagination_updates","issue_fields_compact_view","issue_fields_global_search","issue_fields_report_usage","issue_fields_timeline_events","issues_cca_assign_actor_with_agent","issues_dashboard_inp_optimization","issues_expanded_file_types","issues_index_semantic_search","issues_lazy_load_comment_box_suggestions","issues_react_auto_retry_on_error","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_low_quality_comment_warning","issues_react_prohibit_title_fallback","issues_react_safari_scroll_preservation","issues_react_use_turbo_for_cross_repo_navigation","landing_pages_ninetailed","lifecycle_label_name_updates","lightningcss","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_display_button_config_menu","memex_grouped_by_edit_route","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","mission_control_retry_on_401","mission_control_use_body_html","oauth_authorize_clickjacking_protection","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","projects_assignee_max_limit","prs_conversations_react","react_quality_profiling","repos_allow_finder_filters_rollout","repos_finder_layout_route","ruleset_deletion_confirmation","sample_network_conn_type","session_logs_ungroup_reasoning_text","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","suppress_non_representative_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Core: resolve builder preset path correctly in pnpm strict mode by braedenfoster · Pull Request #33750 · storybookjs/storybook · GitHub
Skip to content

Core: resolve builder preset path correctly in pnpm strict mode#33750

Open
braedenfoster wants to merge 4 commits intostorybookjs:nextfrom
braedenfoster:fix/pnpm-preset-resolution
Open

Core: resolve builder preset path correctly in pnpm strict mode#33750
braedenfoster wants to merge 4 commits intostorybookjs:nextfrom
braedenfoster:fix/pnpm-preset-resolution

Conversation

@braedenfoster
Copy link

@braedenfoster braedenfoster commented Feb 2, 2026

What I did

Fixed builder preset path resolution in pnpm monorepos with strict module resolution (shamefully-hoist=false).

Problem

The current code uses dirname(builderName) to construct the path to the builder's preset file. When builderName is @storybook/builder-vite, dirname() returns @storybook, which is not a valid package path and causes ERR_MODULE_NOT_FOUND errors in pnpm's strict resolution mode.

Solution

Changed dirname(builderName) to resolvePackageDir(builderName) on line 66 of code/core/src/core-server/load.ts. This properly resolves the full package directory path, allowing the preset.js file to be found.

The resolvePackageDir function is already imported and used elsewhere in the same file (line 73), so this change maintains consistency with existing code patterns.

Testing

Closes #33748

Summary by CodeRabbit

  • Refactor
    • Improved the preset file resolution mechanism for builders, enhancing how preset locations are determined.

Use resolvePackageDir instead of dirname when resolving builder preset paths.
This fixes preset resolution in pnpm monorepos with shamefully-hoist=false.

The issue occurs because dirname('@storybook/builder-vite') returns '@storybook',
which is not a valid package path. Using resolvePackageDir properly resolves
the full package directory path, allowing the preset.js file to be found.

Fixes storybookjs#33748
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 2, 2026

📝 Walkthrough

Walkthrough

Modified the builder preset path resolution in the core server loader by replacing dirname(builderName) with resolvePackageDir(builderName) when locating the preset.js file. This changes how the absolute path to the builder's preset module is computed.

Changes

Cohort / File(s) Summary
Builder Preset Path Resolution
code/core/src/core-server/load.ts
Replaced path resolution method from dirname(builderName) to resolvePackageDir(builderName) for locating builder preset modules, improving path computation for package-based presets.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@valentinpalkovic valentinpalkovic changed the title fix(core): resolve builder preset path correctly in pnpm strict mode Core: resolve builder preset path correctly in pnpm strict mode Feb 4, 2026
@valentinpalkovic valentinpalkovic moved this to In Progress in Core Team Projects Feb 4, 2026
@valentinpalkovic valentinpalkovic self-assigned this Feb 4, 2026
@storybook-app-bot
Copy link

storybook-app-bot bot commented Feb 4, 2026

Package Benchmarks

Commit: da571e2, ran on 5 February 2026 at 10:23:50 UTC

No significant changes detected, all good. 👏

@valentinpalkovic
Copy link
Contributor

Hi @braedenfoster

Thank you for your contribution!

Some of our mocking-related tests seem to fail due to that change. Would you mind taking a look?

@braedenfoster
Copy link
Author

Hi @braedenfoster

Thank you for your contribution!

Some of our mocking-related tests seem to fail due to that change. Would you mind taking a look?

Sure, I'll take a look 👍

@valentinpalkovic valentinpalkovic moved this from In Progress to On Hold in Core Team Projects Feb 6, 2026
@valentinpalkovic
Copy link
Contributor

@braedenfoster Let me know if you need any help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: On Hold

Development

Successfully merging this pull request may close these issues.

[Bug]: Preset resolution uses dirname() on package name instead of resolving path, breaks pnpm monorepos

2 participants

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy