Skip to content

🚀 CreateProject

Creates a brand-new Composer project based on an existing package (e.g. a framework skeleton), equivalent to running composer create-project package/name directory version.

When to use

Use when you need to quickly scaffold a new project, e.g. initializing a Laravel, Symfony, or Yii application. Pass an empty version to install the latest version; pass a version constraint (e.g. ^5.0) to install a specific version.

Signature

go
func (c *Composer) CreateProject(packageName string, directory string, version string) error

Parameters

ParameterTypeDescription
packageNamestringPackage name, e.g. laravel/laravel, symfony/website-skeleton
directorystringTarget directory where the project will be created
versionstringVersion constraint; pass an empty string to use the latest version

Return value

error: Returns the corresponding error message if an error occurs while creating the project; nil on success.

Example

go
package main

import (
	"fmt"
	"log"

	"github.com/scagogogo/composer-skills/pkg/composer"
)

func main() {
	comp, err := composer.New(composer.DefaultOptions())
	if err != nil {
		log.Fatalf("init failed: %v", err)
	}

	// Create a latest-version Laravel project
	if err := comp.CreateProject("laravel/laravel", "my-project", ""); err != nil {
		log.Fatalf("failed to create project: %v", err)
	}

	// Create a specific-version Symfony project
	if err := comp.CreateProject("symfony/website-skeleton", "symfony-project", "^5.0"); err != nil {
		log.Fatalf("failed to create project: %v", err)
	}

	fmt.Println("Project created")
}

Advanced

  • To pass additional options such as --no-dev, --prefer-dist, --stability, use the CreateProjectWithOptions variant.
  • If you just want to initialize an empty composer.json, InitProject is more appropriate.
  • After creation, you can read basic project information via GetProjectInfo.

Released under the MIT License