agence-adeliom / lumberjack-assets
1.0.57
2023-05-30 09:00 UTC
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: 2024-12-20 17:16:08 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.