diff --git a/src/bp-activity/bp-activity-admin.php b/src/bp-activity/bp-activity-admin.php
index 418cdc0..d917779 100644
--- a/src/bp-activity/bp-activity-admin.php
+++ b/src/bp-activity/bp-activity-admin.php
@@ -201,12 +201,9 @@ add_filter( 'default_hidden_meta_boxes', 'bp_activity_admin_edit_hidden_metaboxe
 function bp_activity_admin_load() {
 	global $bp_activity_list_table;
 
-	$bp = buddypress();
-
-	// Decide whether to load the dev version of the CSS and JavaScript.
-	$min = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : 'min.';
-
+	$bp       = buddypress();
 	$doaction = bp_admin_list_table_current_bulk_action();
+	$min      = bp_core_get_minified_asset_suffix();
 
 	/**
 	 * Fires at top of Activity admin page.
@@ -308,11 +305,11 @@ function bp_activity_admin_load() {
 	}
 
 	// Enqueue CSS and JavaScript.
-	wp_enqueue_script( 'bp_activity_admin_js', $bp->plugin_url . "bp-activity/admin/js/admin.{$min}js",   array( 'jquery', 'wp-ajax-response' ), bp_get_version(), true );
+	wp_enqueue_script( 'bp_activity_admin_js', $bp->plugin_url . "bp-activity/admin/js/admin{$min}.js",   array( 'jquery', 'wp-ajax-response' ), bp_get_version(), true );
 	wp_localize_script( 'bp_activity_admin_js', 'bp_activity_admin_vars', array(
 		'page' => get_current_screen()->id
 	) );
-	wp_enqueue_style( 'bp_activity_admin_css', $bp->plugin_url . "bp-activity/admin/css/admin.{$min}css", array(),                               bp_get_version()       );
+	wp_enqueue_style( 'bp_activity_admin_css', $bp->plugin_url . "bp-activity/admin/css/admin{$min}.css", array(),                               bp_get_version()       );
 
 	wp_style_add_data( 'bp_activity_admin_css', 'rtl', true );
 	if ( $min ) {
diff --git a/src/bp-activity/bp-activity-cssjs.php b/src/bp-activity/bp-activity-cssjs.php
index 83258aa..ec14cd4 100644
--- a/src/bp-activity/bp-activity-cssjs.php
+++ b/src/bp-activity/bp-activity-cssjs.php
@@ -31,7 +31,7 @@ function bp_activity_mentions_script() {
 	}
 
 
-	$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+	$min = bp_core_get_minified_asset_suffix();
 
 	wp_enqueue_script( 'bp-mentions', buddypress()->plugin_url . "bp-activity/js/mentions{$min}.js", array( 'jquery', 'jquery-atwho' ), bp_get_version(), true );
 	wp_enqueue_style( 'bp-mentions-css', buddypress()->plugin_url . "bp-activity/css/mentions{$min}.css", array(), bp_get_version() );
diff --git a/src/bp-core/bp-core-cssjs.php b/src/bp-core/bp-core-cssjs.php
index 714995a..b7fc5aa 100644
--- a/src/bp-core/bp-core-cssjs.php
+++ b/src/bp-core/bp-core-cssjs.php
@@ -16,7 +16,7 @@ defined( 'ABSPATH' ) || exit;
  * @since 2.1.0
  */
 function bp_core_register_common_scripts() {
-	$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+	$min = bp_core_get_minified_asset_suffix();
 	$url = buddypress()->plugin_url . 'bp-core/js/';
 
 	/**
@@ -63,7 +63,7 @@ add_action( 'bp_admin_enqueue_scripts', 'bp_core_register_common_scripts', 1 );
  * @since 2.1.0
  */
 function bp_core_register_common_styles() {
-	$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+	$min = bp_core_get_minified_asset_suffix();
 	$url = buddypress()->plugin_url . 'bp-core/css/';
 
 	/**
diff --git a/src/bp-core/bp-core-customizer-email.php b/src/bp-core/bp-core-customizer-email.php
index 06eb33c..851bfab 100644
--- a/src/bp-core/bp-core-customizer-email.php
+++ b/src/bp-core/bp-core-customizer-email.php
@@ -78,7 +78,7 @@ function bp_email_init_customizer( WP_Customize_Manager $wp_customize ) {
 		 * the Customizer loads very, very early.
 		 */
 		$bp  = buddypress();
-		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+		$min = bp_core_get_minified_asset_suffix();
 
 		wp_enqueue_script(
 			'bp-customizer-receiver-emails',
diff --git a/src/bp-core/bp-core-functions.php b/src/bp-core/bp-core-functions.php
index dc93da4..41be5f4 100644
--- a/src/bp-core/bp-core-functions.php
+++ b/src/bp-core/bp-core-functions.php
@@ -2313,6 +2313,24 @@ function _bp_strip_spans_from_title( $title_part = '' ) {
 	return trim( $title );
 }
 
+/**
+ * Get the correct filename suffix for minified assets.
+ *
+ * @since 2.5.0
+ *
+ * @return string
+ */
+function bp_core_get_minified_asset_suffix() {
+	$ext = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
+
+	// Ensure the assets can be located when running from /src/.
+	if ( defined( 'BP_SOURCE_SUBDIRECTORY' ) && BP_SOURCE_SUBDIRECTORY === 'src' ) {
+		$ext = str_replace( '.min', '', $ext );
+	}
+
+	return $ext;
+}
+
 /** Nav Menu ******************************************************************/
 
 /**
diff --git a/src/bp-core/classes/class-bp-admin.php b/src/bp-core/classes/class-bp-admin.php
index dcd5bea..7dd39f9 100644
--- a/src/bp-core/classes/class-bp-admin.php
+++ b/src/bp-core/classes/class-bp-admin.php
@@ -952,7 +952,7 @@ class BP_Admin {
 	 * @since 2.5.0
 	 */
 	public function admin_register_styles() {
-		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+		$min = bp_core_get_minified_asset_suffix();
 		$url = $this->css_url;
 
 		/**
@@ -1004,7 +1004,7 @@ class BP_Admin {
 	 * @since 2.5.0
 	 */
 	public function admin_register_scripts() {
-		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+		$min = bp_core_get_minified_asset_suffix();
 		$url = $this->js_url;
 
 		/**
diff --git a/src/bp-core/deprecated/2.1.php b/src/bp-core/deprecated/2.1.php
index 5dcb198..221f50a 100644
--- a/src/bp-core/deprecated/2.1.php
+++ b/src/bp-core/deprecated/2.1.php
@@ -324,7 +324,7 @@ function bp_core_load_buddybar_css() {
 		return;
 	}
 
-	$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+	$min = bp_core_get_minified_asset_suffix();
 
 	if ( file_exists( get_stylesheet_directory() . '/_inc/css/adminbar.css' ) ) { // Backwards compatibility
 		$stylesheet = get_stylesheet_directory_uri() . '/_inc/css/adminbar.css';
diff --git a/src/bp-friends/classes/class-bp-core-friends-widget.php b/src/bp-friends/classes/class-bp-core-friends-widget.php
index fc6b607..a1ea9d4 100644
--- a/src/bp-friends/classes/class-bp-core-friends-widget.php
+++ b/src/bp-friends/classes/class-bp-core-friends-widget.php
@@ -48,7 +48,7 @@ class BP_Core_Friends_Widget extends WP_Widget {
 			return;
 		}
 
-		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+		$min = bp_core_get_minified_asset_suffix();
 		wp_enqueue_script( 'bp_core_widget_friends-js', buddypress()->plugin_url . "bp-friends/js/widget-friends{$min}.js", array( 'jquery' ), bp_get_version() );
 
 		$user_id = bp_displayed_user_id();
diff --git a/src/bp-groups/bp-groups-admin.php b/src/bp-groups/bp-groups-admin.php
index fb44a16..04a3dfd 100644
--- a/src/bp-groups/bp-groups-admin.php
+++ b/src/bp-groups/bp-groups-admin.php
@@ -78,10 +78,8 @@ function bp_groups_admin_load() {
 	// Build redirection URL.
 	$redirect_to = remove_query_arg( array( 'action', 'action2', 'gid', 'deleted', 'error', 'updated', 'success_new', 'error_new', 'success_modified', 'error_modified' ), $_SERVER['REQUEST_URI'] );
 
-	// Decide whether to load the dev version of the CSS and JavaScript.
-	$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : 'min.';
-
-	$doaction = bp_admin_list_table_current_bulk_action();
+	$doaction   = bp_admin_list_table_current_bulk_action();
+	$min        = bp_core_get_minified_asset_suffix();
 
 	/**
 	 * Fires at top of groups admin page.
@@ -187,12 +185,12 @@ function bp_groups_admin_load() {
 	$bp = buddypress();
 
 	// Enqueue CSS and JavaScript.
-	wp_enqueue_script( 'bp_groups_admin_js', $bp->plugin_url . "bp-groups/admin/js/admin.{$min}js", array( 'jquery', 'wp-ajax-response', 'jquery-ui-autocomplete' ), bp_get_version(), true );
+	wp_enqueue_script( 'bp_groups_admin_js', $bp->plugin_url . "bp-groups/admin/js/admin{$min}.js", array( 'jquery', 'wp-ajax-response', 'jquery-ui-autocomplete' ), bp_get_version(), true );
 	wp_localize_script( 'bp_groups_admin_js', 'BP_Group_Admin', array(
 		'add_member_placeholder' => __( 'Start typing a username to add a new member.', 'buddypress' ),
 		'warn_on_leave'          => __( 'If you leave this page, you will lose any unsaved changes you have made to the group.', 'buddypress' ),
 	) );
-	wp_enqueue_style( 'bp_groups_admin_css', $bp->plugin_url . "bp-groups/admin/css/admin.{$min}css", array(), bp_get_version() );
+	wp_enqueue_style( 'bp_groups_admin_css', $bp->plugin_url . "bp-groups/admin/css/admin{$min}.css", array(), bp_get_version() );
 
 	wp_style_add_data( 'bp_groups_admin_css', 'rtl', true );
 	if ( $min ) {
diff --git a/src/bp-groups/classes/class-bp-groups-widget.php b/src/bp-groups/classes/class-bp-groups-widget.php
index f529cbe..e7ff6e0 100644
--- a/src/bp-groups/classes/class-bp-groups-widget.php
+++ b/src/bp-groups/classes/class-bp-groups-widget.php
@@ -30,7 +30,7 @@ class BP_Groups_Widget extends WP_Widget {
 		parent::__construct( false, _x( '(BuddyPress) Groups', 'widget name', 'buddypress' ), $widget_ops );
 
 		if ( is_active_widget( false, false, $this->id_base ) && ! is_admin() && ! is_network_admin() ) {
-			$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+			$min = bp_core_get_minified_asset_suffix();
 			wp_enqueue_script( 'groups_widget_groups_list-js', buddypress()->plugin_url . "bp-groups/js/widget-groups{$min}.js", array( 'jquery' ), bp_get_version() );
 		}
 	}
diff --git a/src/bp-members/classes/class-bp-members-admin.php b/src/bp-members/classes/class-bp-members-admin.php
index 019b945..8e43006 100644
--- a/src/bp-members/classes/class-bp-members-admin.php
+++ b/src/bp-members/classes/class-bp-members-admin.php
@@ -556,7 +556,7 @@ class BP_Members_Admin {
 			return;
 		}
 
-		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+		$min = bp_core_get_minified_asset_suffix();
 		$css = $this->css_url . "admin{$min}.css";
 
 		/**
diff --git a/src/bp-messages/bp-messages-cssjs.php b/src/bp-messages/bp-messages-cssjs.php
index efc074c..33cdf16 100644
--- a/src/bp-messages/bp-messages-cssjs.php
+++ b/src/bp-messages/bp-messages-cssjs.php
@@ -19,7 +19,7 @@ function messages_add_autocomplete_js() {
 	if ( bp_is_messages_component() && bp_is_current_action( 'compose' ) ) {
 		add_action( 'wp_head', 'messages_autocomplete_init_jsblock' );
 
-		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+		$min = bp_core_get_minified_asset_suffix();
 		$url = buddypress()->plugin_url . 'bp-messages/js/';
 
 		wp_enqueue_script( 'bp-jquery-autocomplete', "{$url}autocomplete/jquery.autocomplete{$min}.js", array( 'jquery' ), bp_get_version() );
@@ -37,7 +37,7 @@ add_action( 'bp_enqueue_scripts', 'messages_add_autocomplete_js' );
  */
 function messages_add_autocomplete_css() {
 	if ( bp_is_messages_component() && bp_is_current_action( 'compose' ) ) {
-		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+		$min = bp_core_get_minified_asset_suffix();
 		$url = buddypress()->plugin_url . 'bp-messages/css/';
 
 		wp_register_style( 'bp-messages-autocomplete', "{$url}autocomplete/jquery.autocompletfb{$min}.css", array(), bp_get_version() );
diff --git a/src/bp-templates/bp-legacy/buddypress-functions.php b/src/bp-templates/bp-legacy/buddypress-functions.php
index 14ac15e..e720922 100644
--- a/src/bp-templates/bp-legacy/buddypress-functions.php
+++ b/src/bp-templates/bp-legacy/buddypress-functions.php
@@ -214,7 +214,7 @@ class BP_Legacy extends BP_Theme_Compat {
 	 * @uses wp_enqueue_style() To enqueue the styles
 	 */
 	public function enqueue_styles() {
-		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+		$min = bp_core_get_minified_asset_suffix();
 
 		// Locate the BP stylesheet.
 		$ltr = $this->locate_asset_in_stack( "buddypress{$min}.css",     'css' );
@@ -275,7 +275,7 @@ class BP_Legacy extends BP_Theme_Compat {
 	 * @since 1.7.0
 	 */
 	public function enqueue_scripts() {
-		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+		$min = bp_core_get_minified_asset_suffix();
 
 		// Locate the BP JS file.
 		$asset = $this->locate_asset_in_stack( "buddypress{$min}.js", 'js' );
diff --git a/src/bp-xprofile/bp-xprofile-cssjs.php b/src/bp-xprofile/bp-xprofile-cssjs.php
index cc89582..221cfaa 100644
--- a/src/bp-xprofile/bp-xprofile-cssjs.php
+++ b/src/bp-xprofile/bp-xprofile-cssjs.php
@@ -17,7 +17,7 @@ defined( 'ABSPATH' ) || exit;
  */
 function xprofile_add_admin_css() {
 	if ( !empty( $_GET['page'] ) && strpos( $_GET['page'], 'bp-profile-setup' ) !== false ) {
-		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+		$min = bp_core_get_minified_asset_suffix();
 
 		wp_enqueue_style( 'xprofile-admin-css', buddypress()->plugin_url . "bp-xprofile/admin/css/admin{$min}.css", array(), bp_get_version() );
 
@@ -43,7 +43,7 @@ function xprofile_add_admin_js() {
 		wp_enqueue_script( 'jquery-ui-droppable' );
 		wp_enqueue_script( 'jquery-ui-sortable'  );
 
-		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+		$min = bp_core_get_minified_asset_suffix();
 		wp_enqueue_script( 'xprofile-admin-js', buddypress()->plugin_url . "bp-xprofile/admin/js/admin{$min}.js", array( 'jquery', 'jquery-ui-sortable' ), bp_get_version() );
 
 		// Localize strings.
