diff --git a/src/Composer/Command/InstallCommand.php b/src/Composer/Command/InstallCommand.php index 675f56719..98f240423 100644 --- a/src/Composer/Command/InstallCommand.php +++ b/src/Composer/Command/InstallCommand.php @@ -37,6 +37,7 @@ class InstallCommand extends Command new InputOption('no-custom-installers', null, InputOption::VALUE_NONE, 'Disables all custom installers.'), new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), new InputOption('verbose', 'v', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), + new InputOption('optimize-autoloaders', 'o', InputOption::VALUE_NONE, 'Optimize autoloaders during autoloader dump') )) ->setHelp(<<install command reads the composer.lock file from @@ -64,6 +65,7 @@ EOT ->setPreferDist($input->getOption('prefer-dist')) ->setDevMode($input->getOption('dev')) ->setRunScripts(!$input->getOption('no-scripts')) + ->setOptimizeAutoloaders($input->getOption('optimize-autoloaders')) ; if ($input->getOption('no-custom-installers')) { diff --git a/src/Composer/Command/UpdateCommand.php b/src/Composer/Command/UpdateCommand.php index b92245e4e..de485b47a 100644 --- a/src/Composer/Command/UpdateCommand.php +++ b/src/Composer/Command/UpdateCommand.php @@ -37,6 +37,7 @@ class UpdateCommand extends Command new InputOption('no-custom-installers', null, InputOption::VALUE_NONE, 'Disables all custom installers.'), new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), new InputOption('verbose', 'v', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), + new InputOption('optimize-autoloaders', 'o', InputOption::VALUE_NONE, 'Optimize autoloaders during autoloader dump') )) ->setHelp(<<update command reads the composer.json file from the @@ -67,6 +68,7 @@ EOT ->setPreferDist($input->getOption('prefer-dist')) ->setDevMode($input->getOption('dev')) ->setRunScripts(!$input->getOption('no-scripts')) + ->setOptimizeAutoloaders($input->getOption('optimize-autoloaders')) ->setUpdate(true) ->setUpdateWhitelist($input->getArgument('packages')) ; diff --git a/src/Composer/Installer.php b/src/Composer/Installer.php index 2043e6c8b..6ad27959a 100644 --- a/src/Composer/Installer.php +++ b/src/Composer/Installer.php @@ -92,6 +92,7 @@ class Installer protected $preferSource = false; protected $preferDist = false; + protected $optimizeAutoloaders = false; protected $devMode = false; protected $dryRun = false; protected $verbose = false; @@ -221,7 +222,7 @@ class Installer // write autoloader $this->io->write('Generating autoload files'); $localRepos = new CompositeRepository($this->repositoryManager->getLocalRepositories()); - $this->autoloadGenerator->dump($this->config, $localRepos, $this->package, $this->installationManager, 'composer'); + $this->autoloadGenerator->dump($this->config, $localRepos, $this->package, $this->installationManager, 'composer', $this->optimizeAutoloaders); if ($this->runScripts) { // dispatch post event @@ -745,6 +746,19 @@ class Installer return $this; } + /** + * Wether or not generated autoloaders are optimized + * + * @param bool $optimizeAutoloaders + * @return Installer + */ + public function setOptimizeAutoloaders($optimizeAutoloaders = false) + { + $this->optimizeAutoloaders = (boolean) $optimizeAutoloaders; + + return $this; + } + /** * update packages *