1. Go to this page and download the library: Download wp-strap/vite library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
wp-strap / vite example snippets
use WPStrap\Vite\Assets;
// Resolves instance and registers project configurations
Assets::register([
'dir' => plugin_dir_path(__FILE__), // or get_stylesheet_directory() for themes
'url' => plugins_url(\basename(__DIR__)) // or get_stylesheet_directory_uri() for themes
'version' => '1.0.2', // Set a global version (optional)
'deps' => [ 'scripts' => [], 'styles' => [] ] // Set global dependencies (optional)
]);
// Listens to ViteJS dev server and makes adjustment to make HMR work
Assets::devServer()->start();
// returns: https://your-site.com/wp-content/plugins/your-plugin/build/js/main.oi4h32d.js
Assets::get('js/main.js')
// Alternatively you can use these as well which will be more targeted to specific folders
// and for some of the methods you don't need to write the file extension
Assets::js('main')
Assets::css('main')
Assets::image('bird-on-black.jpg')
Assets::svg('instagram')
Assets::font('SourceSerif4Variable-Italic.ttf.woff2')
// Example of enqueuing the scripts
add_action('wp_enqueue_scripts', function () {
// You can enqueue & register the tradtional way using global data
wp_enqueue_script('my-handle', Assets::js('main'), Assets::deps('scripts'), Assets::version());
wp_enqueue_style('my-handle', Assets::css('main'), Assets::deps('styles'), Assets::version());
// Or use a more simple method that
use WPStrap\Vite\Assets;
use WPStrap\Vite\AssetsService;
use WPStrap\Vite\DevServer;
// Instantiates the Asset service and registers project configurations
$assets = new AssetsService();
$assets->register([
'dir' => plugin_dir_path(__FILE__), // or get_stylesheet_directory() for themes
'url' => plugins_url(\basename(__DIR__)) // or get_stylesheet_directory_uri() for themes
]);
// Listens to ViteJS dev server and makes adjustment to make HMR work
(new DevServer($assets))->start();
$assets->get('js/main.js');
$assets->js('main')
$assets->css('main')
$assets->image('bird-on-black.jpg')
$assets->svg('instagram')
$assets->font('SourceSerif4Variable-Italic.ttf.woff2')
// Traditional
wp_enqueue_script('my-handle', $this->assets->js('main'), $this->assets->deps('scripts'), $this->assets->version());
wp_enqueue_style('my-handle', $this->assets->css('main'), $this->assets->deps('styles'), $this->assets->version());
// Custom methods
$this->assets->enqueueStyle('my-handle', 'main');
$this->assets->enqueueScript('my-handle', 'main', ['another-dep'])
->useAsync()
->useAttribute('key', 'value')
->localize('object_name', ['data' => 'data'])
->appendInline('<script>console.log("hello");</script>');
// You can also use the facade based on this instance.
Assets::setFacade($assets);
Assets::get('css/main.css');
use WPStrap\Vite\AssetsInterface;
use WPStrap\Vite\AssetsService;
use WPStrap\Vite\DevServer;
function assets(): AssetsInterface {
static $assets;
if(!isset($assets)) {
$assets = (new AssetsService())->register([
'dir' => plugin_dir_path(__FILE__),
'url' => plugins_url(\basename(__DIR__)),
'version' => '1.0.0'
]);
}
return $assets;
}
(new DevServer(assets()))->start();
add_action('wp_enqueue_scripts', function () {
// Traditional
wp_enqueue_script('my-handle', assets()->js('main'), assets()->deps('scripts'), assets()->version());
wp_enqueue_style('my-handle', assets()->css('main'), assets()->deps('styles'), assets()->version());
// Using custom methods
assets()->enqueueStyle('my-handle', 'main');
assets()->enqueueScript('my-handle', ['Main', 'main'], ['another-dep'])
->useAsync()
->useAttribute('key', 'value')
->localize('object_name', ['data' => 'data'])
->appendInline('<script>console.log("hello");</script>');
});
use League\Container\Container;
use WPStrap\Vite\Assets;
use WPStrap\Vite\AssetsInterface;
use WPStrap\Vite\AssetsService;
use WPStrap\Vite\DevServer;
use WPStrap\Vite\DevServerInterface;
$container = new Container();
$container->add(AssetsInterface::class)->setConcrete(AssetsService::class)->addMethodCall('register', [
'dir' => plugin_dir_path(__FILE__),
'url' => plugins_url(\basename(__DIR__))
]);
$container->add(DevServerInterface::class)->setConcrete(DevServer::class)->addArgument(AssetsInterface::class);
$assets = $container->get(AssetsInterface::class);
$devServer = $container->get(DevServerInterface::class);
$devServer->start();
$assets->get('main/main.css');
// You can also set a PSR container as a facade accessor
Assets::setFacadeAccessor($container);
Assets::get('main/main.css')
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.