- Building & Previewing
There are multiple methods of installing Tapestry, the preferred method of installing Tapestry is to download the
.phar archive available from the projects github releases page here and placing it into your
Once downloaded unzip the
tapestry-x.x.x.zip and place the
tapestry.phar and (if on windows)
tapestry.bin files in to a folder that is within your
%PATH%. If completed successfully typing
where tapestry on widows or
which tapestry on linux will return the location path for where you have installed Tapestry.
To test that you have successfully installed Tapestry you can run
tapestry --version in your terminal and you should see something similar to
Tapestry version 1.0.8-dev, environment local in return.
Tapestry comes with a basic project scaffold built in, to initiate your first Tapestry project run:
$ tapestry init my-first-website
Tapestry will create the folder my-first-website within the current working directory and scaffold into it the default project directory structure.
The default project scaffold, for convenience comes with Laravel Elixir bundled in; before we continue you will need to run
npm install to install it. For more information on the defined gulp tasks that come with Laravel Elixir, click here.
You should now within the
my-first-website folder see the following generated file structure:
my-first-website/ ├── source/ | ├── _assets/ | | ├── img | | ├── js | | └── less | ├── _blog/ | | └── 2016-01-01-hello-world.md | ├── _templates/ | | └── default.phtml | ├── _views/ | | └── blog.phtml | └── index.phtml ├── .gitignore ├── node_modules ├── config.php ├── gulpfile.js ├── kernel.php └── package.json
More details on the default Tapestry project structure can be found here.
Tapestry is “blog aware” out of the box so the majority of the default scaffold files are to do with displaying a collection of blog posts; you can find out more about creating your content here.
To build your Tapestry website you execute the build command within the
$ tapestry build
This will build the files found in the
source directory and output them to the
build_local, local is the default environment for Tapestry and the build command accepts a
--env argument with which you can define the environment, e.g the following will output to
$ tapestry build --env=development
In the interest of keeping Tapestry light, previewing your website with PHP is handled directly by PHP itself, this is done via the following command:
$ php -S 127.0.0.1:3000 -t build_local
PHP will then serve up the static pages at
http://127.0.0.1:3000 while providing output akin to the below in to your console:
PHP 5.6.24 Development Server started at Thu Mar 23 15:42:36 2017 Listening on http://127.0.0.1:3000 Document root is F:\build_local Press Ctrl-C to quit. [Thu Mar 23 15:42:41 2017] 127.0.0.1:53118 : / [Thu Mar 23 15:42:41 2017] 127.0.0.1:53119 : /img/staticgen.gif [Thu Mar 23 15:43:01 2017] 127.0.0.1:53145 : /documentation
The default project scaffold comes with Laravel Elixir, this provides out of the box tasks for less, imagemin, browserify and browserSync. Install via
npm install and then
gulp watch to preview your site.
browserSync will open a new browser window/tab automatically and reload the page every time a change is noticed. I have noticed one distinct bug with the file watcher on Windows in that it will not notice if you add a new file to the watched path - in that case I personally execute
tapestry build in a separate terminal.