# The `stack new` command ~~~text stack new PACKAGE_NAME [--bare] [--[no-]init] [TEMPLATE_NAME] [-p|--param KEY:VALUE] [DIR(S)] [--omit-packages] [--force] [--ignore-subdirs] ~~~ `stack new` creates a new project using a project template. By default: * the project is created in a new directory named after the package. Pass the `--bare` flag to create the project in the current directory; and * the project is initialised for use with Stack. Pass the `--no-init` flag to skip such initialisation. The `--param :` option specifies a key-value pair to populate a key in a template. The option can be specified multiple times. The arguments specifying directories and the `--ignore-subdirs`, `--force` and `--omit-packages` flags are as for the [`stack init` command](init_command.md). These arguments are ignored if the `--no-init` flag is passed. ## Project templates A project template file can be located in a repository named `stack-templates` on GitHub, GitLab or Bitbucket; at a URL; or on the local file system. Project template file names have the extension `.hsfiles`. The extension does not need to be specified with `stack new`. A project template file `my-template.hsfiles` in a repository `username/stack-templates` on GitHub, GitLab or Bitbucket can be specified with `stack new` as: ~~~test :username/my-template ~~~ where `` is one of `github` for [GitHub](https://github.com/), `gitlab` for [GitLab](https://gitlab.com), or `bitbucket` for [Bitbucket](https://bitbucket.com). The default service is GitHub, the default username is `commercialhaskell` and the default project template name is `new-template`. ## Examples Create a project for package `my-project` in new directory `my-project` with the default project template file and initialise it for use with Stack: ~~~text stack new my-project ~~~ Create a project for package `my-package` in the current directory with the default project template file and initialise it for use with Stack: ~~~text stack new my-package --bare ~~~ Create a project with the `rio` project template at the default repository and initialise it for use with Stack: ~~~text stack new my-project rio ~~~ Create a project with the `mysql` project template provided by the `yesodweb/stack-templates` repository on GitHub and initialise it for use with Stack: ~~~text stack new my-project yesodweb/mysql ~~~ Create a project with the `my-template` project template provided by the `username/stack-templates` repository on Bitbucket and initialise it for use with Stack: ~~~text stack new my-project bitbucket:username/my-template ~~~ Create a project with the `my-template.hsfiles` project template file at `https://example.com` and initialise it for use with Stack: ~~~text stack new my-project https://example.com/my-template ~~~ Create a project with the local project template file `/my-template.hsfiles` and initialise it for use with Stack: ~~~text stack new my-project /my-template ~~~ Create a project with the `simple` project template file at the default repository (which does not use Hpack and a `package.yaml` file) and do not initialise it for use with Stack (`stack init` could be used subsequently): ~~~text stack new my-project --no-init simple ~~~