Standalone path resolver for Webpack Encore

0.1 2019-12-11 10:21 UTC

This package is auto-updated.

Last update: 2020-07-11 15:19:38 UTC


Latest Stable Version License Build Status Coverage Status Quality Score Total Downloads

Webpack Encore Resolver

Webpack Encore can work as a standalone Javascript library with yarn add @symfony/webpack-encore. However, to dynamically load assets (runtime, vendors, versioned assets, ...), you still need Symfony/Twig on the back-end part along with the webpack-encore-bundle.

So, here is a standalone PHP package to port asset(), encore_entry_js_files(), encore_entry_css_files(), encore_entry_script_tags(), encore_entry_link_tags() functions of Webpack Encore outside of Twig's scope, in a vanilla PHP project.


composer require bentools/webpack-encore-resolver

Example Usage

Consider this webpack.config.js file:

const Encore = require('@symfony/webpack-encore');

    .addEntry('main', './assets/js/main.js')
    // ...

module.exports = Encore.getWebpackConfig();

You can generate versioned assets tags the following way:

require_once __DIR__ . '/../vendor/autoload.php';

use function BenTools\WebpackEncoreResolver\encore_entry_link_tags;
use function BenTools\WebpackEncoreResolver\encore_entry_script_tags;
<!doctype html>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <?php encore_entry_link_tags('main');?>
    <?php encore_entry_script_tags('main');?>
    <!-- ... -->

Alternative (for more control on your markup):

require_once __DIR__ . '/../vendor/autoload.php';

use function BenTools\WebpackEncoreResolver\asset;
use function BenTools\WebpackEncoreResolver\encore_entry_css_files;
use function BenTools\WebpackEncoreResolver\encore_entry_js_files;
<!doctype html>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <?php foreach (encore_entry_css_files('main') as $resource): ?>
        <link rel="stylesheet" href="<?=$resource?>">
    <?php endforeach; ?>
    <?php foreach (encore_entry_js_files('main') as $resource): ?>
        <script src="<?=$resource?>"></script>
    <?php endforeach; ?>
    <!-- Or request a specific resource -->
    <link rel="stylesheet" href="<?=asset('main.css')?>">


Multiple webpack configurations / multiple manifests aren't supported at the moment. PRs welcome!