PHPackages                             fw/last-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. fw/last-bundle

ActiveSymfony-bundle[Utility &amp; Helpers](/categories/utility)

fw/last-bundle
==============

Static site generator for any Symfony 4 project.

v1.1(7y ago)111493[1 issues](https://github.com/franzwilding/last/issues)PHP

Since Aug 28Pushed 7y ago5 watchersCompare

[ Source](https://github.com/franzwilding/last)[ Packagist](https://packagist.org/packages/fw/last-bundle)[ RSS](/packages/fw-last-bundle/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (2)Dependencies (6)Versions (3)Used By (0)

Last – static site generator for any Symfony project
====================================================

[](#last--static-site-generator-for-any-symfony-project)

[![Build Status](https://camo.githubusercontent.com/6759fcdff650a18c94e346a9952b11b5eee219ecc9b5c79c1f1776a213a9a1a1/68747470733a2f2f7472617669732d63692e6f72672f6672616e7a77696c64696e672f6c6173742e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/franzwilding/last)[![Test Coverage](https://camo.githubusercontent.com/0c38b2097ca1a0d83e52edb039bd486ae3e945dcf3aabd9b8a7ff481b322adcc/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f65393333346639363537666334613635653234632f746573745f636f766572616765)](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
------------

[](#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
-----

[](#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?
-----------------------

[](#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
-------------

[](#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
-----------------

[](#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
---------------

[](#troubleshooting)

### My links start with `http://localhost/` what should I do?

[](#my-links-start-with-httplocalhost-what-should-i-do)

Use `{{ path() }}` instead of `{{ url() }}` in your templates to make your urls relative.

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

2

Last Release

2814d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7b70c32a4874a1134c21e1174ca81f861a55314e9174dbad35d58ae1b0905470?d=identicon)[franzwilding](/maintainers/franzwilding)

---

Top Contributors

[![franzwilding](https://avatars.githubusercontent.com/u/309309?v=4)](https://github.com/franzwilding "franzwilding (22 commits)")

---

Tags

phpssgstatic-site-generatorsymfony

### Embed Badge

![Health badge](/badges/fw-last-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/fw-last-bundle/health.svg)](https://phpackages.com/packages/fw-last-bundle)
```

###  Alternatives

[shivas/versioning-bundle

Symfony application versioning, simple console command to manage version (with providers e.g. git tag) of your application using Semantic Versioning 2.0.0 recommendations

1121.2M1](/packages/shivas-versioning-bundle)[netgen/layouts-core

Netgen Layouts enables you to build and manage complex web pages in a simpler way and with less coding. This is the core of Netgen Layouts, its heart and soul.

3689.4k10](/packages/netgen-layouts-core)[symfony/ai-bundle

Integration bundle for Symfony AI components

30282.3k6](/packages/symfony-ai-bundle)[pixelopen/cloudflare-turnstile-bundle

A simple package to help integrate Cloudflare Turnstile on Symfony.

31205.8k3](/packages/pixelopen-cloudflare-turnstile-bundle)[netgen/content-browser

Netgen Content Browser is a Symfony bundle that provides an interface which selects items from any kind of backend and returns the IDs of selected items back to the calling code.

14112.1k8](/packages/netgen-content-browser)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
