Symfony Encore

Out of the box Symfony 4.x comes with some useful tools to help bootstrap the tools required for frontend development.

By making some simple changes to a JS file in the root of the Symfony application you can quickly configure Webpack to handle compilation from SCSS to CSS, ES2015+ to ES5 etc.

Encore Commands

The commands used by Encore are detailed in the package.json file.

``

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 {
     "devDependencies": {},
     "license": "UNLICENSED",
     "private": true,
     "scripts": {
         "dev-server": "encore dev-server",
         "dev": "encore dev",
         "watch": "encore dev --watch",
         "build": "encore production --progress"
     },
     "dependencies": {}
 }

There are two ways that Symfony will build the distributable JS/CSS payloads depending on the environment. dev, dev-server and watch build for the development environment and build will bundle things for production and takes the longest to run but produces the smallest and most performant version of the output.

To run the command, ensure yarn is installed and in the terminal call

1
2
3
4
yarn run dev
yarn run dev-server
yarn run watch
yarn run build

The watch command will observe the source files (as configured in the webpack.config.js file) and trigger a dev build when a change is observed. Watch is faster than running dev repeatedly, it is recommend that you use it at the very least.

The dev-server command sets up a hot reloading webpack dev server that will update the Javascript after a build without requiring a manual refresh of the browser. It does have the limitation that changes to CSS source files will not trigger an update.

Configuring the dev server inside an LXC/Docker container can be difficult but does work when set up correctly. Options for configuration go in to the webpack.config.js file.