protected function getAllLibraries()
    {
        $modules = [];
        $basePath = $this->getProjectPath();

        // Get all modules
        foreach ($this->getModulePaths() as $modulePath) {
            // Filter by non-composer folders
            $composerPath = Util::joinPaths($modulePath, 'composer.json');
            if (!file_exists($composerPath)) {
                continue;
            }

            // Ensure this library should be exposed, and has at least one folder
            $module = new Library($basePath, $modulePath);
            if (!$module->requiresExpose() || !$module->getExposedFolders()) {
                continue;
            }

            // Save this module
            $modules[] = $module;
        }
        return $modules;
    }