agence-adeliom / lumberjack-assets
Installs: 6 187
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
pkg:composer/agence-adeliom/lumberjack-assets
Requires
- php: >=8.0.2
 - ext-dom: *
 - rareloop/lumberjack-core: ^5.0|^6.0
 - symfony/web-link: ^5.4|^6.0
 
- 1.x-dev
 - 1.0.57
 - 1.0.56
 - 1.0.55
 - 1.0.54
 - 1.0.53
 - 1.0.52
 - 1.0.51
 - 1.0.50
 - 1.0.49
 - 1.0.48
 - 1.0.47
 - 1.0.44
 - 1.0.41
 - 1.0.40
 - 1.0.39
 - 1.0.38
 - 1.0.37
 - 1.0.36
 - 1.0.35
 - 1.0.34
 - 1.0.33
 - 1.0.32
 - 1.0.31
 - 1.0.30
 - 1.0.29
 - 1.0.27
 - 1.0.26
 - 1.0.25
 - 1.0.24
 - 1.0.23
 - 1.0.22
 - 1.0.21
 - 1.0.20
 - 1.0.19
 - 1.0.18
 - 1.0.17
 - 1.0.16
 - 1.0.15
 - 1.0.14
 - 1.0.13
 - 1.0.12
 - 1.0.11
 - 1.0.10
 - 1.0.9
 - 1.0.8
 - 1.0.7
 - 1.0.2
 - 1.0.1
 - 1.0.0
 
This package is auto-updated.
Last update: 2025-10-20 19:17:13 UTC
README
Implementation of webpack into Lumberjack
Requirements
- PHP 8.0 or greater
 - Composer
 - Lumberjack
 - npm 8.0 or greater
 
Installation
composer require agence-adeliom/lumberjack-assets
# Copy the configuration file
cp vendor/agence-adeliom/lumberjack-assets/config/assets.php web/app/themes/YOUR_THEME/config/assets.php
Using Webpack Encore
cd web/app/themes/YOUR_THEME/
npm install @symfony/webpack-encore --save-dev
Creating the webpack.config.js File
Next, create a new webpack.config.js file. You can also check the documentation https://symfony.com/doc/current/frontend.html#encore-documentation
const Encore = require('@symfony/webpack-encore'); // Manually configure the runtime environment if not already configured yet by the "encore" command. // It's useful when you use tools that rely on webpack.config.js file. if (!Encore.isRuntimeEnvironmentConfigured()) { Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev'); } Encore // directory where compiled assets will be stored .setOutputPath('build/') // public path used by the web server to access the output path .setPublicPath('/build') // only needed for CDN's or sub-directory deploy //.setManifestKeyPrefix('build/') /* * ENTRY CONFIG * * Each entry will result in one JavaScript file (e.g. app.js) * and one CSS file (e.g. app.css) if your JavaScript imports CSS. */ .addEntry('app', './assets/app.js') // When enabled, Webpack "splits" your files into smaller pieces for greater optimization. .splitEntryChunks() // will require an extra script tag for runtime.js // but, you probably want this, unless you're building a single-page app .enableSingleRuntimeChunk() /* * FEATURE CONFIG * * Enable & configure other features below. For a full * list of features, see: * https://symfony.com/doc/current/frontend.html#adding-more-features */ .cleanupOutputBeforeBuild() .enableBuildNotifications() .enableSourceMaps(!Encore.isProduction()) // enables hashed filenames (e.g. app.abc123.css) .enableVersioning(Encore.isProduction()) .configureBabel((config) => { config.plugins.push('@babel/plugin-proposal-class-properties'); }) // enables @babel/preset-env polyfills .configureBabelPresetEnv((config) => { config.useBuiltIns = 'usage'; config.corejs = 3; }) // enables Sass/SCSS support //.enableSassLoader() // uncomment if you use TypeScript //.enableTypeScriptLoader() // uncomment if you use React //.enableReactPreset() // uncomment to get integrity="..." attributes on your script & link tags // requires WebpackEncoreBundle 1.4 or higher //.enableIntegrityHashes(Encore.isProduction()) // uncomment if you're having problems with a jQuery plugin //.autoProvidejQuery() ; module.exports = Encore.getWebpackConfig();
Register the service provider into web/app/themes/YOUR_THEME/config/app.php
'providers' => [ ... \Adeliom\Lumberjack\Assets\AssetsProvider::class ]
Usage
Backend usage
Enqueue assets
add_action( 'wp_enqueue_scripts', function () { \Adeliom\Lumberjack\Assets\Assets::enqueue( 'custom-asset', 'your-entrypoint', [ 'version' => null, 'deps' => [], 'in_footer' => true, 'media' => 'all', 'attributes' => [] ]); });
Frontend usage
{{ entry_script_tags('your-entrypoint') }}
# Add custom attributes
{{ entry_script_tags('your-entrypoint', {'async': true}) }}
{{ entry_link_tags('your-entrypoint') }}
# Add custom attributes
{{ entry_link_tags('your-entrypoint', {'media': 'print'}) }}
# Check if the entrypoint exist
{{ entry_exists('your-entrypoint')}}
# Get the path of your asset
{{ asset('images/logo.svg') }}
# Merge html class
{% set className = "" %}
{{ className|mergeClass('your-class', "another-class", "...") }}
{% set class = {
    base: "your-base-class", // base class
    default: { // default value
        margin: "sm" 
    },
    margin: {
        xs: "...",
        sm: "..."
    }
}|mergeClass(margin|default("sm"), "your-custom-class")}
License
Lumberjack Assets is released under the MIT License.