Monorepo\Build::build PHP Метод

build() публичный Метод

public build ( $rootDirectory, $optimize = false, $noDevMode = false )
    public function build($rootDirectory, $optimize = false, $noDevMode = false)
    {
        $this->io->write(sprintf('<info>Generating autoload files for monorepo sub-packages %s dev-dependencies.</info>', $noDevMode ? 'without' : 'with'));
        $start = microtime(true);
        $packages = $this->loadPackages($rootDirectory);
        $evm = new EventDispatcher(new Composer(), $this->io);
        $generator = new AutoloadGenerator($evm, $this->io);
        $generator->setDevMode(!$noDevMode);
        $installationManager = new InstallationManager();
        $installationManager->addInstaller(new MonorepoInstaller());
        foreach ($packages as $packageName => $config) {
            if (strpos($packageName, 'vendor') === 0) {
                continue;
            }
            $this->io->write(sprintf(' [Subpackage] <comment>%s</comment>', $packageName));
            $mainPackage = new Package($packageName, "@stable", "@stable");
            $mainPackage->setType('monorepo');
            $mainPackage->setAutoload($config['autoload']);
            $mainPackage->setDevAutoload($config['autoload-dev']);
            $localRepo = new MonorepoInstalledRepository();
            $this->resolvePackageDependencies($localRepo, $packages, $packageName);
            $composerConfig = new Config(true, $rootDirectory);
            $composerConfig->merge(array('config' => array('vendor-dir' => $config['path'] . '/vendor')));
            $generator->dump($composerConfig, $localRepo, $mainPackage, $installationManager, 'composer', $optimize);
            $binDir = $config['path'] . '/vendor/bin';
            // remove old symlinks
            array_map('unlink', glob($binDir . '/*'));
            foreach ($localRepo->getPackages() as $package) {
                foreach ($package->getBinaries() as $binary) {
                    if (!is_dir($binDir)) {
                        mkdir($binDir, 0755, true);
                    }
                    $binFile = $binDir . '/' . basename($binary);
                    symlink($rootDirectory . '/' . $binary, $binFile);
                }
            }
        }
        $duration = microtime(true) - $start;
        $this->io->write(sprintf('Monorepo subpackage autoloads generated in <comment>%0.2f</comment> seconds.', $duration));
    }

Usage Example

 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $noDevMode = (bool) $input->getOption('no-dev');
     $optimize = (bool) $input->getOption('optimize-autoloader');
     $build = new Build(new ConsoleIO($input, $output, $this->getHelperSet()));
     $build->build(getcwd(), $optimize, $noDevMode);
 }
All Usage Examples Of Monorepo\Build::build