https://github.com/franzwilding/last
Zero Configuration, Static Site Generator for any Symfony project.
https://github.com/franzwilding/last
php ssg static-site-generator symfony
Last synced: 9 months ago
JSON representation
Zero Configuration, Static Site Generator for any Symfony project.
- Host: GitHub
- URL: https://github.com/franzwilding/last
- Owner: franzwilding
- Created: 2018-08-13T07:44:36.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-08-31T16:54:42.000Z (almost 8 years ago)
- Last Synced: 2025-05-15T06:49:54.428Z (about 1 year ago)
- Topics: php, ssg, static-site-generator, symfony
- Language: PHP
- Homepage:
- Size: 47.9 KB
- Stars: 11
- Watchers: 5
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Last – static site generator for any Symfony project
[](https://travis-ci.org/franzwilding/last)
[](https://codeclimate.com/github/franzwilding/last/test_coverage)
Last is a minimalistic static site generator for Symfony 4 applications. Once installed, Last provides a
command that will simply create requests for all of your routes and dumps the result as a static file to a dist folder.
## Installation
*(A symfony/flex recipe will be created soon. )*
composer require fw/last-bundle
Last should get registered automatically to config/bundles.php. If not, add it by hand:
...
Fw\LastBundle\FwLastBundle::class => ['all' => true],
## Usage
Now you can run the dump command and your Symfony app gets exported as static html files.
# will dump to the configured dist folder, defaults to %project%/dist
bin/console last:dump
# wil dump to the given folder
bin/console last:dump --dist=./custom_dist_folder
## Is it production ready?
Soon, however the following is missing yet:
- [ ] Test with more real life projects
- [ ] Provide an symfony/flex recipe
- [ ] Automatically copy assets from public/build, public/bundles/* and other locations to dist folder after dumping
## Configuration
fw_last:
dist_folder: '%kernel.project_dir%/dist' # this is the default dist folder, if you don't set it
providers:
static: true # Static provider is enabled per default, you can disable it here
## Request providers
Last runs requests against your kernel. So in order to make it work, all desired requests must be defined. To make
things more easy, Last comes with a request provider for all static routes (routes without mandatory placeholders). So
you only need to implement a custom request provider if you want to include dynamic routes like *blog/article/{id}*. A
simple provider could look like this:
use Fw\LastBundle\Router\RouteProvider;
class YourustomProvider implements RouteProvider
{
/**
* {@inheritdoc}
*/
public function getRoutes(): array
{
return [
Request::create('blog/article/1'),
Request::create('blog/article/2'),
Request::create('blog/article/3'),
];
}
}
And needs to be a tagged service, in order to make it visible for Last.
Your\CustomBundle\Provider\CustomProvider:
tags: ['fw.last.route_provider']
Of course you can inject any dependencies like an entity manager to create more advanced providers.
## Troubleshooting
### My links start with `http://localhost/` what should I do?
Use `{{ path() }}` instead of `{{ url() }}` in your templates to make your urls relative.