REGEX: Cómo eliminar comentarios de javascripts, usando código PHP

¡Estoy combinando todos mis javascriupt en un archivo ordenado para reducir las solicitudes http! Estoy atrapado quitando los comentarios/* comments */ y// comments. Mi nivel está muy por debajo de las cosas de minificación o análisis. Sé hacer cuerdas de macarrones. Algo más complejo que eso, no lo encontrarás en mi computadora o cocina, así que:

PREGUNTA

Mientras tanto, al combinarlo en un archivo, quiero eliminar todos los comentarios.
¿Cuál es la expresión regular correcta para esto?

<?php
header('Content-type: text/javascript');    
$offset = 60 * 60 * 24; // Cache for a day
header ('Cache-Control: max-age=' . $offset . ', must-revalidate');
header ('Expires: ' . gmdate ("D, d M Y H:i:s", time() + $offset) . ' GMT');

ob_start("compress");
function compress($buffer) {

# NOT SURE, not all new lines are removed??
# remove tabs, spaces, newlines, etc.
$buffer = str_replace(array("\r\n", "\r", "\t", '  ', '    '), '', $buffer);  

# WORKS !!!
# remove comments / XXXXXXX
$buffer = preg_replace('(// .+)', '', $buffer);

######################################################################## 
# !! STUCK HERE !! OUTPUT FILE LOOKS OK BUT WEBSITE DOESNT LOAD OK IF THIS IS ON
# remove comments / * XXX  (enters etc) XXXX  * /
# $buffer = preg_replace('#/\*(?:.(?!/)|[^\*](?=/)|(?<!\*)/)*\*/#s', '', $buffer);
########################################################################        

return $buffer;
}

include('../file1.js');
include('../file2.js');  
ob_end_flush();
?>

Sería genial si detectara y eliminara lo siguiente:

/* XXXX */

/* 
  XXXX
  XXXX
*/

¡Eso es todo! No puedo hacer que funcione nomatter qué expresión regular utilizo incluso con esta increíble herramienta, donde ENCONTRÉ la combinación correcta para ser:

RegExp: /\/\*(?:.(?!/)|[^\*](?=/)|(?<!\*)/)*\*\//gs
pattern: \/\*(?:.(?!/)|[^\*](?=/)|(?<!\*)/)*\*\/
flags: gs

http://gskinner.com/RegExr/

Respuestas a la pregunta(4)

Su respuesta a la pregunta