tutorial-start-from-scratch.md 2.83 KB
Newer Older
1 2 3
Creating your own Application structure
=======================================

4
> Note: This section is under development.
Qiang Xue committed
5

6 7 8
While the [basic](https://github.com/yiisoft/yii2/tree/master/apps/basic) and [advanced](https://github.com/yiisoft/yii2/tree/master/apps/advanced)
application templates are great for most of your needs, you may want to create your own application template with which
to start your projects.
9

10 11
Application templates in Yii are simply repositories containing a `composer.json` file, and registered as a Composer package.
Any repository can be identified as a Composer package, making it installable via `create-project` Composer command.
12

13 14
Since it's a bit too much to start building your entire template from scratch, it is better to use one of the built-in
templates as a base. Let's use the basic template here.
15

Larry Ullman committed
16
Clone the Basic Template
17 18
----------------------------------------

Larry Ullman committed
19 20 21
The first step is to clone the basic Yii template's Git repository:

```bash
22 23 24
git clone git@github.com:yiisoft/yii2-app-basic.git
```

Larry Ullman committed
25 26
Then wait for the repository to be downloaded to your computer. Since the changes made to the template won't be pushed back, you can delete the `.git` diretory and all
of its contents from the download.
27

Larry Ullman committed
28
Modify the Files
29 30
------------

Larry Ullman committed
31 32
Next, you'll want to modify the `composer.json` to reflect your template. Change the `name`, `description`, `keywords`, `homepage`, `license`, and `support` values
to describe your new template. Also adjust the `require`, `require-dev`, `suggest`, and other options to match your template's requirements.
33

Larry Ullman committed
34 35
> Note: In the `composer.json` file, use the `writable` parameter under `extra` to specify
> per file permissions to be set after an application is created using the template.
36

Larry Ullman committed
37
Next, actually modify the structure and contents of the application as you would like the default to be. Finally, update the README file to be applicable to your template.
38

Larry Ullman committed
39
Make a Package
40 41
--------------

Nate Sanden committed
42
With the template defined, create a Git repository from it, and push your files there. If you're going to open source your template, [Github](http://github.com) is the best place to host it. If you intend to keep your template non-collaborative, any Git repository site will do.
43

Larry Ullman committed
44
Next, you need to register your package for Composer's sake. For public templates, the package should be registered at [Packagist](https://packagist.org/).
Nate Sanden committed
45
For private templates, it is a bit more tricky to register the package. For instructions, see the [Composer documentation](https://getcomposer.org/doc/05-repositories.md#hosting-your-own).
46

Larry Ullman committed
47
Use the Template
48 49
------

Larry Ullman committed
50
That's all that's required to create a new Yii application template. Now you can create projects using your template:
51 52

```
Qiang Xue committed
53
composer global require "fxp/composer-asset-plugin:1.0.0-beta4"
54
composer create-project --prefer-dist --stability=dev mysoft/yii2-app-coolone new-project
55
```